summaryrefslogtreecommitdiff
path: root/src/Network/BitTorrent
diff options
context:
space:
mode:
Diffstat (limited to 'src/Network/BitTorrent')
-rw-r--r--src/Network/BitTorrent/Exchange.hs1
-rw-r--r--src/Network/BitTorrent/Internal.hs26
2 files changed, 19 insertions, 8 deletions
diff --git a/src/Network/BitTorrent/Exchange.hs b/src/Network/BitTorrent/Exchange.hs
index dd1f9d0b..2173cf8b 100644
--- a/src/Network/BitTorrent/Exchange.hs
+++ b/src/Network/BitTorrent/Exchange.hs
@@ -45,6 +45,7 @@ import Data.Torrent
45data Event = Available Bitfield 45data Event = Available Bitfield
46 | Want 46 | Want
47 | Block 47 | Block
48 deriving Show
48 49
49{----------------------------------------------------------------------- 50{-----------------------------------------------------------------------
50 Peer wire 51 Peer wire
diff --git a/src/Network/BitTorrent/Internal.hs b/src/Network/BitTorrent/Internal.hs
index e231fb2c..39e10ce2 100644
--- a/src/Network/BitTorrent/Internal.hs
+++ b/src/Network/BitTorrent/Internal.hs
@@ -85,11 +85,16 @@ instance Ord ClientSession where
85 compare = comparing clientPeerID 85 compare = comparing clientPeerID
86 86
87newClient :: [Extension] -> IO ClientSession 87newClient :: [Extension] -> IO ClientSession
88newClient exts = ClientSession <$> newPeerID 88newClient exts = do
89 <*> pure exts 89 mgr <- Ev.new
90 <*> newTVarIO S.empty 90 forkIO $ loop mgr
91 <*> Ev.new 91
92 <*> newIORef (startProgress 0) 92 ClientSession
93 <$> newPeerID
94 <*> pure exts
95 <*> newTVarIO S.empty
96 <*> pure mgr
97 <*> newIORef (startProgress 0)
93 98
94{----------------------------------------------------------------------- 99{-----------------------------------------------------------------------
95 Swarm session 100 Swarm session
@@ -207,7 +212,7 @@ maxIncomingTime :: Int
207maxIncomingTime = 120 * sec 212maxIncomingTime = 120 * sec
208 213
209maxOutcomingTime :: Int 214maxOutcomingTime :: Int
210maxOutcomingTime = 60 * sec 215maxOutcomingTime = 1 * sec
211 216
212-- | Should be called after we have received any message from a peer. 217-- | Should be called after we have received any message from a peer.
213updateIncoming :: PeerSession -> IO () 218updateIncoming :: PeerSession -> IO ()
@@ -221,8 +226,13 @@ updateOutcoming PeerSession {..} =
221 updateTimeout (eventManager (clientSession swarmSession)) 226 updateTimeout (eventManager (clientSession swarmSession))
222 outcomingTimeout maxOutcomingTime 227 outcomingTimeout maxOutcomingTime
223 228
224sendKA :: Socket -> IO () 229sendKA :: Socket -> SwarmSession -> IO ()
225sendKA sock = sendAll sock (encode BT.KeepAlive) 230sendKA sock SwarmSession {..} = do
231 print "I'm sending keep alive."
232 sendAll sock (encode BT.KeepAlive)
233 let mgr = eventManager clientSession
234 updateTimeout mgr
235 print "Done.."
226 236
227abortSession :: IO () 237abortSession :: IO ()
228abortSession = error "abortSession: not implemented" 238abortSession = error "abortSession: not implemented"