Commits


fs/p9p/new: bring back type safety for message types Type safety for messages was removed to allowing message types to be anything. In particular, this was useful for error types. This introduced a few nasty bugs that wasn't worth the convenience of automatically packing errors over a server channel. Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: cleanup encoding/decoding We take some time to cleanup the codec implementation. The need for the message to implement the Message interface has been removed to allow flexibility in what can land in the message field. Error types can be returned directly now. The messages have been moved into a separate file. We also ensure that the number of pointer types is reduced in deserialized messages, hopefully avoiding unnecessary pointer traversal. Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: correct message encoding for Rerror message Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: proxy end to end fully working Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: stat implementation and correct dir/Rstat encoding Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: refactor channel framing After a few connection bugs and framing issues, the transport has been refactored into a channel that manages raw message sending. More importantly, this frees up pre-session protocol version negotiation. To support this, the encoder and decoder have been folded into a Codec interface. The encoding support still needs work, but this has made the server and client code much simpler to understand. Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: ls and cat command now fully working Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: working client to server communication A rather large commit, this provides the first working version of running the wire protocol over a connection. It is fairly shaky but we can already get portions of the repl emitting and receiving 9p messages. Other additions include the separate of client and transport. We've also made some adjustments to message instantiation. Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: add server stubs and various implementation notes Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: add several new message types for encoding Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: Add message definitions and support Signed-off-by: Stephen J Day <stephen.day@docker.com>


fs/p9p/new: Lock down encode/decode for 9p Among other things, this adds support for 9p encoding and decoding. We now have fully reflective message marshaling and unmarshaling. Other aspects of this commit include the code actually compiling and movement towards a testable interface. Signed-off-by: Stephen J Day <stephen.day@docker.com>