Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite #30

Draft
wants to merge 202 commits into
base: master
Choose a base branch
from
Draft

Rewrite #30

wants to merge 202 commits into from

Conversation

Thomasdezeeuw
Copy link
Owner

Work-in-progress.

Complete rewrite.
We'll add them back once we need them.
Simple hashing implementation that only works for Keys.
Don't require the storage::Read trait to be implemented and return the
Key as return value for add_blob.
It contains the Protocol trait which defines how to interact with
connected clients. With this is should be easier to support multiple
protocol, such as HTTP and RESP, within the same implementation.
Want to use a published version at some point.
We'll add them back later.
Easy way to provide some more context to an error.
Contains a single actor that will control interaction between a
protocol, i.e. a user, and the storage.
And add these to the controller configuration.
So we can add submodules.
We can put it in implementation, rather then type definitions.
Same as FromStr::from_str, but then for bytes.
Splits the Error type into two: RequestError and ResponseError.
Furthermore this adds the IsFatal trait requirement to RequestError to
determine whether or not an error is fatal. For example an I/O error
which can't be recovered from versus a protocol error which can be
recovered from.

Also add reply_to_error to send a reply for an error.
Also introduces a new controller::Error.
Will need to make this asynchronous.
Well the reading side at least.

This implements the RESP version 2, used by Redis, as a Protocol
implementation.
Also makes the method asynchronous.
So we can use the Connection trait.
Stabilises associated_type_bounds.
Just some basic smoke tests.
These tests don't compile for one stupid reason or another. Async
functions still don't work nicely we you start pushing them.
Makes the test output less verbose
Also add Key::try_parse and make both functions constant.
Instead of manually implementing it, as deriving it will also implement
StructuralPartialEq.
Makes it a lot simpler and we don't have to use blocking std::io traits.
We don't hash the key any more, so these are no longer valuable.
Writes the key, as a hex string, to a Vec<u8>.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant