Documentation
¶
Index ¶
- Variables
- func Serve(ctx context.Context, rwc io.ReadWriteCloser, root Node, opts ...Option) error
- func UnwrapValue[T any](v any) (T, bool)
- type DebugFlags
- type Dir
- type Error
- type LineCmdRecv
- type Mode
- type Node
- type OpenMode
- type Opener
- type Option
- type Qid
- type Stat
- type StatModifierFn
- type Unwrapper
- type Wrapped
Constants ¶
This section is empty.
Variables ¶
var ( // https://github.com/0intro/plan9/blob/7524062cfa4689019a4ed6fc22500ec209522ef0/sys/src/lib9p/srv.c#L10 ErrBadAttach = Error{/* contains filtered or unexported fields */} ErrBadOffset = Error{/* contains filtered or unexported fields */} ErrBadCount = Error{/* contains filtered or unexported fields */} ErrBotch = Error{/* contains filtered or unexported fields */} // EPROTO ErrCreateNonDir = Error{/* contains filtered or unexported fields */} ErrDupFid = Error{/* contains filtered or unexported fields */} ErrDupTag = Error{/* contains filtered or unexported fields */} ErrNoCreate = Error{/* contains filtered or unexported fields */} ErrNoRemove = Error{/* contains filtered or unexported fields */} ErrNoStat = Error{/* contains filtered or unexported fields */} ErrNotFound = Error{/* contains filtered or unexported fields */} // ENOENT ErrNoWrite = Error{/* contains filtered or unexported fields */} ErrNoWstat = Error{/* contains filtered or unexported fields */} // EPERM ErrPerm = Error{/* contains filtered or unexported fields */} // EACCES ErrUnknownFid = Error{/* contains filtered or unexported fields */} ErrBadDir = Error{/* contains filtered or unexported fields */} ErrWalkNoDir = Error{/* contains filtered or unexported fields */} ErrBadFD = Error{/* contains filtered or unexported fields */} // EBADFD ErrBadFid = Error{/* contains filtered or unexported fields */} // EBADF ErrFidInUse = Error{/* contains filtered or unexported fields */} // EBADF ErrAuth = Error{/* contains filtered or unexported fields */} // ECONNREFUSED ErrCrossDevice = Error{/* contains filtered or unexported fields */} // EXDEV ErrDeadlock = Error{/* contains filtered or unexported fields */} // EDEADLK ErrDirNotEmpty = Error{/* contains filtered or unexported fields */} // ENOTEMPTY ErrExists = Error{/* contains filtered or unexported fields */} // EEXIST ErrInUse = Error{/* contains filtered or unexported fields */} // ETXTBSY ErrTooBig = Error{/* contains filtered or unexported fields */} // EFBIG ErrIllegalMode = Error{/* contains filtered or unexported fields */} // EINVAL ErrIllegalName = Error{/* contains filtered or unexported fields */} // ENAMETOOLONG ErrIllegalOffset = Error{/* contains filtered or unexported fields */} // EINVAL ErrIllegalSeek = Error{/* contains filtered or unexported fields */} // ESPIPE ErrInProgress = Error{/* contains filtered or unexported fields */} // EINPROGRESS ErrInterrupted = Error{/* contains filtered or unexported fields */} // EINTR ErrInvalidArg = Error{/* contains filtered or unexported fields */} // EINVAL ErrIO = Error{/* contains filtered or unexported fields */} // EIO ErrBadMessage = Error{/* contains filtered or unexported fields */} // EBADMSG ErrMessageTooLong = Error{/* contains filtered or unexported fields */} // EMSGSIZE ErrNoMessage = Error{/* contains filtered or unexported fields */} // ENOMSG ErrConnAbort = Error{/* contains filtered or unexported fields */} // ECONNABORTED ErrConnected = Error{/* contains filtered or unexported fields */} // EISCONN ErrConnRefused = Error{/* contains filtered or unexported fields */} // ECONNREFUSED ErrConnReset = Error{/* contains filtered or unexported fields */} // ECONNRESET ErrHostDown = Error{/* contains filtered or unexported fields */} // EHOSTDOWN ErrNetDown = Error{/* contains filtered or unexported fields */} // ENETDOWN ErrNetReset = Error{/* contains filtered or unexported fields */} // ENETRESET ErrNetUnreachable = Error{/* contains filtered or unexported fields */} // ENETUNREACH ErrNoNet = Error{/* contains filtered or unexported fields */} // ENONET ErrNoRoute = Error{/* contains filtered or unexported fields */} // EHOSTUNREACH ErrNotConnected = Error{/* contains filtered or unexported fields */} // ENOTCONN ErrNoDevice = Error{/* contains filtered or unexported fields */} // ENODEV ErrNoDeviceOrAddr = Error{/* contains filtered or unexported fields */} // ENXIO ErrNoLink = Error{/* contains filtered or unexported fields */} // ENOLINK ErrNoLock = Error{/* contains filtered or unexported fields */} // ENOLCK ErrNoMem = Error{/* contains filtered or unexported fields */} // ENOMEM ErrNoPackage = Error{/* contains filtered or unexported fields */} // ENOPKG ErrBrokenPipe = Error{/* contains filtered or unexported fields */} // EPIPE ErrBadAddr = Error{/* contains filtered or unexported fields */} // EFAULT ErrBusy = Error{/* contains filtered or unexported fields */} // EBUSY ErrComm = Error{/* contains filtered or unexported fields */} // ECOMM ErrNoBufferSpace = Error{/* contains filtered or unexported fields */} // ENOBUFS ErrNoData = Error{/* contains filtered or unexported fields */} // ENODATA ErrNoSpace = Error{/* contains filtered or unexported fields */} // ENOSPC ErrAllreadyInProgress = Error{/* contains filtered or unexported fields */} // EALREADY ErrShutdown = Error{/* contains filtered or unexported fields */} // ESHUTDOWN ErrTimeout = Error{/* contains filtered or unexported fields */} // ETIMEDOUT ErrIsDir = Error{/* contains filtered or unexported fields */} // EISDIR ErrIsNamed = Error{/* contains filtered or unexported fields */} // EISNAM ErrNotBlockDev = Error{/* contains filtered or unexported fields */} // ENOTBLK ErrNotDir = Error{/* contains filtered or unexported fields */} // ENOTDIR ErrNotSock = Error{/* contains filtered or unexported fields */} // ENOTSOCK ErrNotImplemented = Error{/* contains filtered or unexported fields */} // ENOSYS ErrOpNoSupported = Error{/* contains filtered or unexported fields */} // EOPNOTSUPP ErrOutOfRange = Error{/* contains filtered or unexported fields */} // EDOM ErrQuota = Error{/* contains filtered or unexported fields */} // EDQUOT ErrRange = Error{/* contains filtered or unexported fields */} // ERANGE ErrReadOnly = Error{/* contains filtered or unexported fields */} // EROFS ErrReadOnlyFS = Error{/* contains filtered or unexported fields */} // EROFS ErrRemote = Error{/* contains filtered or unexported fields */} // EREMOTE ErrRemoteIO = Error{/* contains filtered or unexported fields */} // EREMOTEIO ErrRemoved = Error{/* contains filtered or unexported fields */} // EIDRM ErrStreamPipe = Error{/* contains filtered or unexported fields */} // ESTRPIPE ErrNoProto = Error{/* contains filtered or unexported fields */} // ENOPROTOOPT ErrProtoNoSupport = Error{/* contains filtered or unexported fields */} // EPROTONOSUPPORT ErrProtoFamilyNoSupport = Error{/* contains filtered or unexported fields */} // EPFNOSUPPORT ErrSockNoSupported = Error{/* contains filtered or unexported fields */} // ESOCKTNOSUPPORT ErrTooManyArgs = Error{/* contains filtered or unexported fields */} // E2BIG ErrTooManyFiles = Error{/* contains filtered or unexported fields */} // EMFILE ErrTooManyLevels = Error{/* contains filtered or unexported fields */} // ELOOP ErrTooManyLinks = Error{/* contains filtered or unexported fields */} // EMLINK ErrTooManyOpenFiles = Error{/* contains filtered or unexported fields */} // ENFILE ErrTooManyUsers = Error{/* contains filtered or unexported fields */} // EUSERS ErrUnknownGroup = Error{/* contains filtered or unexported fields */} // EINVAL ErrUnknownOrBadFid = Error{/* contains filtered or unexported fields */} // EBADF ErrUnknownUser = Error{/* contains filtered or unexported fields */} // EINVAL )
var ErrUnexpectedMessageType = errors.New("unexpected message type")
Functions ¶
func Serve ¶
Serve starts a 9p server over the provided io.ReadWriter that serves the root Node. The root Node should be a Dir.
func UnwrapValue ¶
UnwrapValue is used on values to unwrap them until the requested type is found or until there is nothing else to unwrap (in which case, the second return value will be false).
Types ¶
type DebugFlags ¶
type DebugFlags uint32
const ( DebugReceived DebugFlags = 0x01 DebugSent DebugFlags = 0x02 DebugFlush DebugFlags = 0x04 DebugMessages DebugFlags = DebugReceived | DebugSent | DebugFlush DebugData DebugFlags = 0x08 DebugKnownErrors DebugFlags = 0x10 DebugUnknownErrors DebugFlags = 0x20 DebugErrors DebugFlags = DebugKnownErrors | DebugUnknownErrors DebugAll DebugFlags = DebugMessages | DebugErrors )
type LineCmdRecv ¶
type Node ¶
Node represents a simple filesystem node, that can return a stat
Types that implement this interface, can implement other interfaces to provide functionality:
- Reading: io.ReaderAt, io.ReadSeeker, io.Reader (only sequential reads are allowed)
- Writing: io.WriterAt, io.WriteSeeker, io.Writer (only sequential writes are allowed)
- Closing: io.Closer
- Opening: Opener
- Directories: Dir
type Opener ¶
Opener allows Nodes to return new opened instances.
If the returned val is not Node, it is Wrapped with the current Node.
type Option ¶
type Option func(*server)
func Debug ¶
func Debug(flags DebugFlags) Option
func DefaultNow ¶
func DefaultNow() Option
func DefaultOwner ¶
func StatModifier ¶
func StatModifier(sm StatModifierFn) Option
type Unwrapper ¶
type Unwrapper interface { // Unwraps a Node to maybe expose another interface // // The returned value might be an Unwrapper itself Unwrap() any }
Unwrapper, when impleemnted by a Node, will have Unwrap() called on it before checking if it implements any interfaces the server requires (i.e Open, io.ReaderAt, etc).