-- 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.2 -- | Module providing 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. -- -- 9P2000 messages are sent in little endian byte order rather than -- network byte order (big endian) -- -- 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 -- | For every lower level VarMsg type, encodes a full wrapper around that -- type for use with 9P2000 streams putVarMsg :: VarMsg -> Put -- | For every messages type, runs a Get parser to decode that type of -- payload from the 9P2000 stream getVarMsg :: Tag -> Get 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