You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
9P is a protocol for remote filesystems like NFS. It's very simple and designed around a handful of RPC methods. We want to use this as the basis for interacting with remote filesystems over a pipe (specifically a Duplex pipe, and using Duplex RPC). Most immediately this will be used to expose the Wanix project directory to the Wanix environment via the dev server, but is expected to be a general purpose primitive that will eventually become part of the Tractor Toolkit.
Unlike other filesystem implementations, this involves two components. The first is a MutableFS implementation that is the client side, using 9P messages over Duplex to proxy FS operations to a host side. The second is the host, which is a Duplex server handling 9P messages to serve an FS implementation. This means you can take any MutableFS and put it in this host object and it will serve that FS to the client side.
This is not technically a 9P compatible implementation because 9P expects a different transport, but it is semantically compatible, so if that's ever needed an adapter can be written. We can likely use an existing 9P implementation in Go (there are several), as long as its decomposition allows us to ignore serialization and transport to use Duplex instead. There are also later versions of 9P, namely 9P2000/Styx, but these aren't necessarily preferred. We can also simplify the protocol as needed for now, such as removing auth (this is not intended to be used over a public endpoint).
The text was updated successfully, but these errors were encountered:
9P is a protocol for remote filesystems like NFS. It's very simple and designed around a handful of RPC methods. We want to use this as the basis for interacting with remote filesystems over a pipe (specifically a Duplex pipe, and using Duplex RPC). Most immediately this will be used to expose the Wanix project directory to the Wanix environment via the dev server, but is expected to be a general purpose primitive that will eventually become part of the Tractor Toolkit.
Unlike other filesystem implementations, this involves two components. The first is a MutableFS implementation that is the client side, using 9P messages over Duplex to proxy FS operations to a host side. The second is the host, which is a Duplex server handling 9P messages to serve an FS implementation. This means you can take any MutableFS and put it in this host object and it will serve that FS to the client side.
This is not technically a 9P compatible implementation because 9P expects a different transport, but it is semantically compatible, so if that's ever needed an adapter can be written. We can likely use an existing 9P implementation in Go (there are several), as long as its decomposition allows us to ignore serialization and transport to use Duplex instead. There are also later versions of 9P, namely 9P2000/Styx, but these aren't necessarily preferred. We can also simplify the protocol as needed for now, such as removing auth (this is not intended to be used over a public endpoint).
The text was updated successfully, but these errors were encountered: