diff options
author | Sam Truzjan <pxqr.sta@gmail.com> | 2013-11-30 13:06:09 +0400 |
---|---|---|
committer | Sam Truzjan <pxqr.sta@gmail.com> | 2013-11-30 13:06:09 +0400 |
commit | 5573c240b4c2e87cf2deb55939591edd0851f8b8 (patch) | |
tree | 4c51ad9d979ad1c1b34e9083cfbe67c5a3650aa2 /src/Network/BitTorrent/Tracker/RPC/UDP.hs | |
parent | 7f54308b57615bc61c0727538af2b5a54366eadb (diff) |
Add basic spec for UDP tracker RPC
Diffstat (limited to 'src/Network/BitTorrent/Tracker/RPC/UDP.hs')
-rw-r--r-- | src/Network/BitTorrent/Tracker/RPC/UDP.hs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/Network/BitTorrent/Tracker/RPC/UDP.hs b/src/Network/BitTorrent/Tracker/RPC/UDP.hs index beff6b4f..0336db8d 100644 --- a/src/Network/BitTorrent/Tracker/RPC/UDP.hs +++ b/src/Network/BitTorrent/Tracker/RPC/UDP.hs | |||
@@ -39,7 +39,7 @@ import Data.Text.Encoding | |||
39 | import Data.Time | 39 | import Data.Time |
40 | import Data.Word | 40 | import Data.Word |
41 | import Text.Read (readMaybe) | 41 | import Text.Read (readMaybe) |
42 | import Network.Socket hiding (Connected) | 42 | import Network.Socket hiding (Connected, connect) |
43 | import Network.Socket.ByteString as BS | 43 | import Network.Socket.ByteString as BS |
44 | import Network.URI | 44 | import Network.URI |
45 | import System.Entropy | 45 | import System.Entropy |
@@ -290,8 +290,8 @@ connectUDP tracker = do | |||
290 | Failed msg -> throwIO $ userError $ T.unpack msg | 290 | Failed msg -> throwIO $ userError $ T.unpack msg |
291 | _ -> throwIO $ userError "message type mismatch" | 291 | _ -> throwIO $ userError "message type mismatch" |
292 | 292 | ||
293 | initialTracker :: URI -> IO UDPTracker | 293 | connect :: URI -> IO UDPTracker |
294 | initialTracker uri = do | 294 | connect uri = do |
295 | tracker <- UDPTracker uri <$> (newIORef =<< initialConnection) | 295 | tracker <- UDPTracker uri <$> (newIORef =<< initialConnection) |
296 | connId <- connectUDP tracker | 296 | connId <- connectUDP tracker |
297 | updateConnection connId tracker | 297 | updateConnection connId tracker |
@@ -305,20 +305,20 @@ freshConnection tracker @ UDPTracker {..} = do | |||
305 | connId <- connectUDP tracker | 305 | connId <- connectUDP tracker |
306 | updateConnection connId tracker | 306 | updateConnection connId tracker |
307 | 307 | ||
308 | announce :: UDPTracker -> AnnounceQuery -> IO AnnounceInfo | 308 | announce :: AnnounceQuery -> UDPTracker -> IO AnnounceInfo |
309 | announce tracker ann = do | 309 | announce ann tracker = do |
310 | freshConnection tracker | 310 | freshConnection tracker |
311 | resp <- transaction tracker (Announce ann) | 311 | resp <- transaction tracker (Announce ann) |
312 | case resp of | 312 | case resp of |
313 | Announced info -> return info | 313 | Announced info -> return info |
314 | _ -> fail "announce: response type mismatch" | 314 | _ -> fail "announce: response type mismatch" |
315 | 315 | ||
316 | scrape :: UDPTracker -> ScrapeQuery -> IO Scrape | 316 | scrape :: ScrapeQuery -> UDPTracker -> IO Scrape |
317 | scrape tracker scr = do | 317 | scrape ihs tracker = do |
318 | freshConnection tracker | 318 | freshConnection tracker |
319 | resp <- transaction tracker (Scrape scr) | 319 | resp <- transaction tracker (Scrape ihs) |
320 | case resp of | 320 | case resp of |
321 | Scraped info -> return $ M.fromList $ L.zip scr info | 321 | Scraped info -> return $ M.fromList $ L.zip ihs info |
322 | _ -> fail "scrape: response type mismatch" | 322 | _ -> fail "scrape: response type mismatch" |
323 | 323 | ||
324 | {----------------------------------------------------------------------- | 324 | {----------------------------------------------------------------------- |