summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Network/BitTorrent/Internal.lhs71
1 files changed, 36 insertions, 35 deletions
diff --git a/src/Network/BitTorrent/Internal.lhs b/src/Network/BitTorrent/Internal.lhs
index 08e10e71..ed4fd1a0 100644
--- a/src/Network/BitTorrent/Internal.lhs
+++ b/src/Network/BitTorrent/Internal.lhs
@@ -10,50 +10,54 @@
10> -- Network.BitTorrent.Exchange and modules. To hide some internals 10> -- Network.BitTorrent.Exchange and modules. To hide some internals
11> -- of this module we detach it from Exchange. 11> -- of this module we detach it from Exchange.
12> -- 12> --
13> -- 13>
14> -- NOTE: expose only static data in data field lists, all dynamic 14
15> -- data should be modified through standalone functions. 15**NOTE**: Expose only static data in data field lists, all dynamic
16> -- 16data should be modified through standalone functions.
17
18>
17> {-# LANGUAGE OverloadedStrings #-} 19> {-# LANGUAGE OverloadedStrings #-}
18> {-# LANGUAGE RecordWildCards #-} 20> {-# LANGUAGE RecordWildCards #-}
19> {-# LANGUAGE ViewPatterns #-} 21> {-# LANGUAGE ViewPatterns #-}
20> {-# LANGUAGE TemplateHaskell #-} 22> {-# LANGUAGE TemplateHaskell #-}
21> {-# LANGUAGE DeriveDataTypeable #-} 23> {-# LANGUAGE DeriveDataTypeable #-}
24>
22> module Network.BitTorrent.Internal 25> module Network.BitTorrent.Internal
23> ( Progress(..), startProgress 26> ( -- * Progress
27> Progress(..), startProgress
28>
24> -- * Client 29> -- * Client
25> , ClientSession (clientPeerId, allowedExtensions, listenerPort) 30> , ClientSession (clientPeerId, allowedExtensions, listenerPort)
26> 31>
27> , ThreadCount 32> , ThreadCount
28> , defaultThreadCount 33> , defaultThreadCount
29> 34>
30> , TorrentLoc(..) 35> , TorrentLoc(..)
31> , registerTorrent 36> , registerTorrent
32> , unregisterTorrent 37> , unregisterTorrent
38>
33> , newClient 39> , newClient
34 40>
35> , getCurrentProgress 41> , getCurrentProgress
36> , getSwarmCount 42> , getSwarmCount
37> , getPeerCount 43> , getPeerCount
38 44>
39
40
41> -- * Swarm 45> -- * Swarm
42> , SwarmSession( SwarmSession, torrentMeta, clientSession ) 46> , SwarmSession( SwarmSession, torrentMeta, clientSession )
43 47>
44> , SessionCount 48> , SessionCount
45> , getSessionCount 49> , getSessionCount
46 50>
47> , newLeecher 51> , newLeecher
48> , newSeeder 52> , newSeeder
49> , getClientBitfield 53> , getClientBitfield
50 54>
51> , enterSwarm 55> , enterSwarm
52> , leaveSwarm 56> , leaveSwarm
53> , waitVacancy 57> , waitVacancy
54 58>
55> , pieceLength 59> , pieceLength
56 60>
57> -- * Peer 61> -- * Peer
58> , PeerSession( PeerSession, connectedPeerAddr 62> , PeerSession( PeerSession, connectedPeerAddr
59> , swarmSession, enabledExtensions 63> , swarmSession, enabledExtensions
@@ -61,20 +65,20 @@
61> ) 65> )
62> , SessionState 66> , SessionState
63> , withPeerSession 67> , withPeerSession
64 68>
65> -- ** Broadcasting 69> -- ** Broadcasting
66> , available 70> , available
67> , getPending 71> , getPending
68 72>
69> -- ** Exceptions 73> -- ** Exceptions
70> , SessionException(..) 74> , SessionException(..)
71> , isSessionException 75> , isSessionException
72> , putSessionException 76> , putSessionException
73 77>
74> -- ** Properties 78> -- ** Properties
75> , bitfield, status 79> , bitfield, status
76> , findPieceCount 80> , findPieceCount
77 81>
78> -- * Timeouts 82> -- * Timeouts
79> , updateIncoming, updateOutcoming 83> , updateIncoming, updateOutcoming
80> ) where 84> ) where
@@ -117,14 +121,12 @@
117Progress 121Progress
118------------------------------------------------------------------------ 122------------------------------------------------------------------------
119 123
124Progress data is considered as dynamic within one client session. This
125data also should be shared across client application sessions
126(e.g. files), otherwise use 'startProgress' to get initial 'Progress'.
127
120> -- | 'Progress' contains upload/download/left stats about 128> -- | 'Progress' contains upload/download/left stats about
121> -- current client state and used to notify the tracker. 129> -- current client state and used to notify the tracker.
122> --
123> -- This data is considered as dynamic within one client
124> -- session. This data also should be shared across client
125> -- application sessions (e.g. files), otherwise use 'startProgress'
126> -- to get initial 'Progress'.
127> --
128> data Progress = Progress { 130> data Progress = Progress {
129> _uploaded :: !Integer -- ^ Total amount of bytes uploaded. 131> _uploaded :: !Integer -- ^ Total amount of bytes uploaded.
130> , _downloaded :: !Integer -- ^ Total amount of bytes downloaded. 132> , _downloaded :: !Integer -- ^ Total amount of bytes downloaded.
@@ -378,17 +380,16 @@ and different enabled extensions at the same time.
378Swarm session 380Swarm session
379------------------------------------------------------------------------ 381------------------------------------------------------------------------
380 382
381> {- NOTE: If client is a leecher then there is NO particular reason to 383NOTE: If client is a leecher then there is NO particular reason to
382> set max sessions count more than the_number_of_unchoke_slots * k: 384set max sessions count more than the_number_of_unchoke_slots * k:
383 385
384> * thread slot(activeThread semaphore) 386 * thread slot(activeThread semaphore)
385> * will take but no 387 * will take but no
386 388
387> So if client is a leecher then max sessions count depends on the 389So if client is a leecher then max sessions count depends on the
388> number of unchoke slots. 390number of unchoke slots.
389 391
390> However if client is a seeder then the value depends on . 392However if client is a seeder then the value depends on .
391> -}
392 393
393> -- | Used to bound the number of simultaneous connections and, which 394> -- | Used to bound the number of simultaneous connections and, which
394> -- is the same, P2P sessions within the swarm session. 395> -- is the same, P2P sessions within the swarm session.