-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | 9P2000 in pure Haskell
--
-- Pure Haskell implementation of the 9P2000 protocol from the Plan 9 and
-- Inferno operating systems. Many implementations of 9P2000 exist
-- including the Linux kernel v9fs module, wmii (X window manager). More
-- information on 9P and implementations may be found at
-- http://9p.cat-v.org
@package NineP
@version 0.0.1
-- | Binary serialization of 9P messages to and from lazy ByteStrings. This
-- library does not currently provide any networking support or wrappers
-- for easy to write clients or servers, though that may come with time
-- as we decide the best way to implement these.
--
-- Perhaps interesting about 9P is that the messages are send in little
-- endian as opposed to the somewhat misnamed network byte order
-- that most people refer to for big endian.
--
-- It's fairly easy to use runPut or runGet to generate or parse 9P
-- messages example:
--
-- send sock $ runPut (put (Msg TTVersion (-1) & Tversion 1024
-- 9P2000))
--
-- This sends a lazy ByteString over a socket to begin a handshake of a
-- 9P connection with a server, negotiating the use of the 9P2000
-- protocol, with a maximum message size of 1KB, using a tag of (-1)
-- (known as NOTAG in 9P space.
--
-- This 9P implementation has been lightly tested against an Inferno
-- operating system share with no authentication successfully.
module Data.NineP
class Bin a
get :: (Bin a) => Get a
put :: (Bin a) => a -> Put
-- | A Plan 9 Qid type. See http:9p.cat-v.org for more information
data Qid
Qid :: Word8 -> Word32 -> Word64 -> Qid
qid_typ :: Qid -> Word8
qid_vers :: Qid -> Word32
qid_path :: Qid -> Word64
-- | Provides information on a path entry at a 9P2000 server
data Stat
Stat :: Word16 -> Word32 -> Qid -> Word32 -> Word32 -> Word32 -> Word64 -> String -> String -> String -> String -> Stat
st_typ :: Stat -> Word16
st_dev :: Stat -> Word32
st_qid :: Stat -> Qid
st_mode :: Stat -> Word32
st_atime :: Stat -> Word32
st_mtime :: Stat -> Word32
st_length :: Stat -> Word64
st_name :: Stat -> String
st_uid :: Stat -> String
st_gid :: Stat -> String
st_muid :: Stat -> String
-- | The message envelope type for all 9P2000 messages
data Msg
Msg :: Tag -> Word16 -> VarMsg -> Msg
msg_typ :: Msg -> Tag
msg_tag :: Msg -> Word16
msg_body :: Msg -> VarMsg
-- | A type that enumerates all the valid (and one invalid) message types
-- in 9P2000
data Tag
TTversion :: Tag
TRversion :: Tag
TTauth :: Tag
TRauth :: Tag
TTattach :: Tag
TRattach :: Tag
XXX_TTerror :: Tag
TRerror :: Tag
TTflush :: Tag
TRflush :: Tag
TTwalk :: Tag
TRwalk :: Tag
TTopen :: Tag
TRopen :: Tag
TTcreate :: Tag
TRcreate :: Tag
TTread :: Tag
TRread :: Tag
TTwrite :: Tag
TRwrite :: Tag
TTclunk :: Tag
TRclunk :: Tag
TTremove :: Tag
TRremove :: Tag
TTstat :: Tag
TRstat :: Tag
TTwstat :: Tag
TRwstat :: Tag
-- | A variable message type that encapsulates the valid kinds of messages
-- in a 9P2000 payload
data VarMsg
Tversion :: Word32 -> String -> VarMsg
tv_msize :: VarMsg -> Word32
tv_version :: VarMsg -> String
Rversion :: Word32 -> String -> VarMsg
rv_msize :: VarMsg -> Word32
rv_version :: VarMsg -> String
Tauth :: Word32 -> String -> String -> VarMsg
tau_afid :: VarMsg -> Word32
tau_uname :: VarMsg -> String
tau_aname :: VarMsg -> String
Rauth :: Qid -> VarMsg
ra_aqid :: VarMsg -> Qid
Rerror :: String -> VarMsg
re_ename :: VarMsg -> String
Tflush :: Word16 -> VarMsg
tf_oldtag :: VarMsg -> Word16
Rflush :: VarMsg
Tattach :: Word32 -> Word32 -> String -> String -> VarMsg
tat_fid :: VarMsg -> Word32
tat_afid :: VarMsg -> Word32
tat_uname :: VarMsg -> String
tat_aname :: VarMsg -> String
Rattach :: Qid -> VarMsg
rat_qid :: VarMsg -> Qid
Twalk :: Word32 -> Word32 -> [String] -> VarMsg
tw_fid :: VarMsg -> Word32
tw_newfid :: VarMsg -> Word32
tw_wnames :: VarMsg -> [String]
Rwalk :: [Qid] -> VarMsg
rw_wqid :: VarMsg -> [Qid]
Topen :: Word32 -> Word8 -> VarMsg
to_fid :: VarMsg -> Word32
to_mode :: VarMsg -> Word8
Ropen :: Qid -> Word32 -> VarMsg
ro_qid :: VarMsg -> Qid
ro_iounit :: VarMsg -> Word32
Tcreate :: Word32 -> String -> Word32 -> Word8 -> VarMsg
tcr_fid :: VarMsg -> Word32
tcr_name :: VarMsg -> String
tcr_perm :: VarMsg -> Word32
tcr_mode :: VarMsg -> Word8
Rcreate :: Qid -> Word32 -> VarMsg
rcr_qid :: VarMsg -> Qid
rcr_iounit :: VarMsg -> Word32
Tread :: Word32 -> Word64 -> Word32 -> VarMsg
trd_fid :: VarMsg -> Word32
trd_offset :: VarMsg -> Word64
trd_count :: VarMsg -> Word32
Rread :: ByteString -> VarMsg
rrd_dat :: VarMsg -> ByteString
Twrite :: Word32 -> Word64 -> ByteString -> VarMsg
twr_fid :: VarMsg -> Word32
twr_offset :: VarMsg -> Word64
twr_dat :: VarMsg -> ByteString
Rwrite :: Word32 -> VarMsg
rw_count :: VarMsg -> Word32
Tclunk :: Word32 -> VarMsg
tcl_fid :: VarMsg -> Word32
Rclunk :: VarMsg
Tremove :: Word32 -> VarMsg
trm_fid :: VarMsg -> Word32
Rremove :: VarMsg
Tstat :: Word32 -> VarMsg
ts_fid :: VarMsg -> Word32
Rstat :: [Stat] -> VarMsg
rs_stat :: VarMsg -> [Stat]
Twstat :: Word32 -> [Stat] -> VarMsg
tws_fid :: VarMsg -> Word32
tws_stat :: VarMsg -> [Stat]
Rwstat :: VarMsg
instance Show Msg
instance Eq Msg
instance Show Tag
instance Eq Tag
instance Ord Tag
instance Enum Tag
instance Show VarMsg
instance Eq VarMsg
instance Show Stat
instance Eq Stat
instance Show Qid
instance Eq Qid
instance Bin Msg
instance Bin Tag
instance Bin Stat
instance Bin Qid
instance Bin String
instance Bin Char
instance Bin Word64
instance Bin Word32
instance Bin Word16
instance Bin Word8