{-# LANGUAGE OverloadedStrings #-}
import Control.Exception
import Control.Monad.Trans
import qualified Data.ByteString.Lazy.Char8 as B
import Data.Word
import Network.NineP as N
import Network.NineP.Error
import Network.NineP.File
--cfg = Config $ boringDir "/" [("boring", boringFile "boring"),("nyak", boringFile "nyak")]
spamwr :: Word64 -> B.ByteString -> IO Word32
spamwr _ d = do
B.putStr d
return $ fromIntegral $ B.length d
boringwr _ c = return $ B.take (fromIntegral c) "i am so very boring"
main = do
memd <- memoryDirectory "/" :: IO (NineFile IO)
run9PServer $ Config {
-- TODO Data.Default?
root = boringDir "/" [
("lol", (boringFile "lol") { write = spamwr }),
("memd", memd),
("exception", (boringFile "exception") { N.read = \_ _ -> throw $ AssertionFailed "lol" })],
addr = "unix!/tmp/h9pt",
monadState = undefined
}