summaryrefslogtreecommitdiff
path: root/examples/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/Main.hs')
-rw-r--r--examples/Main.hs37
1 files changed, 6 insertions, 31 deletions
diff --git a/examples/Main.hs b/examples/Main.hs
index fdf982d8..9786dbdc 100644
--- a/examples/Main.hs
+++ b/examples/Main.hs
@@ -1,13 +1,9 @@
1{-# LANGUAGE ViewPatterns #-}
2{-# LANGUAGE PatternGuards #-}
3module Main (main) where 1module Main (main) where
4 2
5import Control.Concurrent 3import Control.Monad
6import Data.Bitfield
7import Network.BitTorrent 4import Network.BitTorrent
8import System.Environment 5import System.Environment
9import Control.Monad.Reader 6import Control.Monad.Trans
10import Data.IORef
11 7
12 8
13main :: IO () 9main :: IO ()
@@ -20,30 +16,9 @@ main = do
20 client <- newClient 100 [] 16 client <- newClient 100 []
21 swarm <- newLeecher client torrent 17 swarm <- newLeecher client torrent
22 18
23-- storage <- bindStorage swarm "/tmp/" 19 storage <- swarm `bindTo` "/tmp/"
24-- discover swarm $ exchange storage
25 20
26 ref <- liftIO $ newIORef 0
27 discover swarm $ do 21 discover swarm $ do
28 forever $ do 22 liftIO $ print "connected to peer"
29 e <- awaitEvent 23 forever $ exchange storage
30 case e of 24 liftIO $ print "disconnect to peer" \ No newline at end of file
31 Available bf
32 | Just m <- findMin bf -> yieldEvent (Want (BlockIx m 0 10))
33 | otherwise -> return ()
34 Want bix -> liftIO $ print bix
35 Fragment blk -> do
36
37 sc <- liftIO $ getSessionCount swarm
38 addr <- asks connectedPeerAddr
39
40 liftIO $ do
41 x <- atomicModifyIORef ref (\x -> (succ x, x))
42 if x `mod` 100 == 0
43 then print (x, sc, addr)
44 else return ()
45
46 yieldEvent (Want (BlockIx 0 0 (16 * 1024)))
47
48
49 print "Bye-bye! =_=" \ No newline at end of file