From 8a03527dba479b520ebda47cdf00080d82d4e933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 2 May 2019 22:55:09 +0200 Subject: Basic local network peer discovery --- src/Main.hs | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src/Main.hs') diff --git a/src/Main.hs b/src/Main.hs index 65ae4a0..017d70d 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,4 +1,34 @@ -module Main where +module Main (main) where + +import Control.Concurrent.Chan +import Control.Exception +import Control.Monad + +import qualified Data.Text.IO as T + +import System.Environment +import System.IO +import System.IO.Error + +import Identity +import Network +import Storage + main :: IO () -main = putStrLn "Hello, Haskell!" +main = do + [bhost] <- getArgs + st <- openStorage "test" + idhead <- catchJust (guard . isDoesNotExistError) (loadHead st "identity") $ \_ -> do + putStr "Name: " + hFlush stdout + name <- T.getLine + let base = Identity name Nothing + Right h <- replaceHead base (Left (st, "identity")) + return h + let sidentity = wrappedLoad (headRef idhead) :: Stored Identity + print $ fromStored sidentity + + chan <- peerDiscovery bhost sidentity + void $ forever $ print =<< readChan chan + return () -- cgit v1.2.3