From 33b7d7badb2e6d96c8a0f532b40bcd7e3e67d1e9 Mon Sep 17 00:00:00 2001 From: Sam T Date: Thu, 20 Jun 2013 21:39:18 +0400 Subject: ~ Fix typo in dirname. --- examples/Main.hs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 examples/Main.hs (limited to 'examples/Main.hs') diff --git a/examples/Main.hs b/examples/Main.hs new file mode 100644 index 00000000..d0404405 --- /dev/null +++ b/examples/Main.hs @@ -0,0 +1,46 @@ +{-# LANGUAGE ViewPatterns #-} +{-# LANGUAGE PatternGuards #-} +module Main (main) where + +import Control.Concurrent +import Data.Bitfield +import Network.BitTorrent +import System.Environment +import Control.Monad.Reader +import Data.IORef + + +main :: IO () +main = do + [path] <- getArgs + torrent <- fromFile path + + print (contentLayout "./" (tInfo torrent)) + + client <- newClient 100 [] + swarm <- newLeecher client torrent + + ref <- liftIO $ newIORef 0 + discover swarm $ do + forever $ do + e <- awaitEvent + case e of + Available bf + | Just m <- findMin bf -> yieldEvent (Want (BlockIx m 0 10)) + | otherwise -> return () + Want bix -> liftIO $ print bix + Fragment blk -> do + + sc <- liftIO $ getSessionCount swarm + addr <- asks connectedPeerAddr + + liftIO $ do + x <- atomicModifyIORef ref (\x -> (succ x, x)) + if x `mod` 100 == 0 + then print (x, sc, addr) + else return () + + yieldEvent (Want (BlockIx 0 0 (16 * 1024))) + + + print "Bye-bye! =_=" \ No newline at end of file -- cgit v1.2.3