diff options
Diffstat (limited to 'src/Network/BitTorrent/Peer.hs')
-rw-r--r-- | src/Network/BitTorrent/Peer.hs | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/src/Network/BitTorrent/Peer.hs b/src/Network/BitTorrent/Peer.hs index 80f47eac..68771052 100644 --- a/src/Network/BitTorrent/Peer.hs +++ b/src/Network/BitTorrent/Peer.hs | |||
@@ -34,16 +34,16 @@ | |||
34 | {-# OPTIONS -fno-warn-orphans #-} | 34 | {-# OPTIONS -fno-warn-orphans #-} |
35 | module Network.BitTorrent.Peer | 35 | module Network.BitTorrent.Peer |
36 | ( -- * Peer identificators | 36 | ( -- * Peer identificators |
37 | PeerID (getPeerID), ppPeerID | 37 | PeerId (getPeerId), ppPeerId |
38 | 38 | ||
39 | -- ** Encoding styles | 39 | -- ** Encoding styles |
40 | , azureusStyle, shadowStyle | 40 | , azureusStyle, shadowStyle |
41 | 41 | ||
42 | -- ** Defaults | 42 | -- ** Defaults |
43 | , defaultClientID, defaultVersionNumber | 43 | , defaultClientId, defaultVersionNumber |
44 | 44 | ||
45 | -- ** Generation | 45 | -- ** Generation |
46 | , newPeerID, timestampByteString | 46 | , newPeerId, timestampByteString |
47 | 47 | ||
48 | -- ** Extra | 48 | -- ** Extra |
49 | , byteStringPadded | 49 | , byteStringPadded |
@@ -104,19 +104,19 @@ version = Version [0, 10, 0, 0] [] | |||
104 | -----------------------------------------------------------------------} | 104 | -----------------------------------------------------------------------} |
105 | 105 | ||
106 | -- | Peer identifier is exactly 20 bytes long bytestring. | 106 | -- | Peer identifier is exactly 20 bytes long bytestring. |
107 | newtype PeerID = PeerID { getPeerID :: ByteString } | 107 | newtype PeerId = PeerId { getPeerId :: ByteString } |
108 | deriving (Show, Eq, Ord, BEncodable) | 108 | deriving (Show, Eq, Ord, BEncodable) |
109 | 109 | ||
110 | instance Serialize PeerID where | 110 | instance Serialize PeerId where |
111 | put = putByteString . getPeerID | 111 | put = putByteString . getPeerId |
112 | get = PeerID <$> getBytes 20 | 112 | get = PeerId <$> getBytes 20 |
113 | 113 | ||
114 | instance URLShow PeerID where | 114 | instance URLShow PeerId where |
115 | urlShow = BC.unpack . getPeerID | 115 | urlShow = BC.unpack . getPeerId |
116 | 116 | ||
117 | -- | Format peer id in human readable form. | 117 | -- | Format peer id in human readable form. |
118 | ppPeerID :: PeerID -> Doc | 118 | ppPeerId :: PeerId -> Doc |
119 | ppPeerID = text . BC.unpack . getPeerID | 119 | ppPeerId = text . BC.unpack . getPeerId |
120 | 120 | ||
121 | 121 | ||
122 | -- | Azureus-style encoding have the following layout: | 122 | -- | Azureus-style encoding have the following layout: |
@@ -134,8 +134,8 @@ ppPeerID = text . BC.unpack . getPeerID | |||
134 | azureusStyle :: ByteString -- ^ 2 character client ID, padded with 'H'. | 134 | azureusStyle :: ByteString -- ^ 2 character client ID, padded with 'H'. |
135 | -> ByteString -- ^ Version number, padded with 'X'. | 135 | -> ByteString -- ^ Version number, padded with 'X'. |
136 | -> ByteString -- ^ Random number, padded with '0'. | 136 | -> ByteString -- ^ Random number, padded with '0'. |
137 | -> PeerID -- ^ Azureus-style encoded peer ID. | 137 | -> PeerId -- ^ Azureus-style encoded peer ID. |
138 | azureusStyle cid ver rnd = PeerID $ BL.toStrict $ B.toLazyByteString $ | 138 | azureusStyle cid ver rnd = PeerId $ BL.toStrict $ B.toLazyByteString $ |
139 | B.char8 '-' <> | 139 | B.char8 '-' <> |
140 | byteStringPadded cid 2 'H' <> | 140 | byteStringPadded cid 2 'H' <> |
141 | byteStringPadded ver 4 'X' <> | 141 | byteStringPadded ver 4 'X' <> |
@@ -155,16 +155,16 @@ azureusStyle cid ver rnd = PeerID $ BL.toStrict $ B.toLazyByteString $ | |||
155 | shadowStyle :: Char -- ^ Client ID. | 155 | shadowStyle :: Char -- ^ Client ID. |
156 | -> ByteString -- ^ Version number. | 156 | -> ByteString -- ^ Version number. |
157 | -> ByteString -- ^ Random number. | 157 | -> ByteString -- ^ Random number. |
158 | -> PeerID -- ^ Shadow style encoded peer ID. | 158 | -> PeerId -- ^ Shadow style encoded peer ID. |
159 | shadowStyle cid ver rnd = PeerID $ BL.toStrict $ B.toLazyByteString $ | 159 | shadowStyle cid ver rnd = PeerId $ BL.toStrict $ B.toLazyByteString $ |
160 | B.char8 cid <> | 160 | B.char8 cid <> |
161 | byteStringPadded ver 4 '-' <> | 161 | byteStringPadded ver 4 '-' <> |
162 | byteStringPadded rnd 15 '0' | 162 | byteStringPadded rnd 15 '0' |
163 | 163 | ||
164 | 164 | ||
165 | -- | "HS" - 2 bytes long client identifier. | 165 | -- | "HS" - 2 bytes long client identifier. |
166 | defaultClientID :: ByteString | 166 | defaultClientId :: ByteString |
167 | defaultClientID = "HS" | 167 | defaultClientId = "HS" |
168 | 168 | ||
169 | -- | Gives exactly 4 bytes long version number for any version of the | 169 | -- | Gives exactly 4 bytes long version number for any version of the |
170 | -- package. Version is taken from .cabal. | 170 | -- package. Version is taken from .cabal. |
@@ -199,8 +199,8 @@ timestampByteString = (BC.pack . format) <$> getCurrentTime | |||
199 | -- | 199 | -- |
200 | -- * UTC time day ++ day time for the random number. | 200 | -- * UTC time day ++ day time for the random number. |
201 | -- | 201 | -- |
202 | newPeerID :: IO PeerID | 202 | newPeerId :: IO PeerId |
203 | newPeerID = azureusStyle defaultClientID defaultVersionNumber | 203 | newPeerId = azureusStyle defaultClientId defaultVersionNumber |
204 | <$> timestampByteString | 204 | <$> timestampByteString |
205 | 205 | ||
206 | -- | Pad bytestring so it's becomes exactly request length. Conversion | 206 | -- | Pad bytestring so it's becomes exactly request length. Conversion |
@@ -398,9 +398,9 @@ unknownClient = ClientInfo unknownImpl unknownVersion | |||
398 | -- peer id uses unknown coding style then client info returned is | 398 | -- peer id uses unknown coding style then client info returned is |
399 | -- 'unknownClient'. | 399 | -- 'unknownClient'. |
400 | -- | 400 | -- |
401 | clientInfo :: PeerID -> ClientInfo | 401 | clientInfo :: PeerId -> ClientInfo |
402 | clientInfo pid = either (const unknownClient) id $ | 402 | clientInfo pid = either (const unknownClient) id $ |
403 | runGet getCI (getPeerID pid) | 403 | runGet getCI (getPeerId pid) |
404 | where -- TODO other styles | 404 | where -- TODO other styles |
405 | getCI = do | 405 | getCI = do |
406 | _ <- getWord8 | 406 | _ <- getWord8 |
@@ -489,7 +489,7 @@ nameMap = | |||
489 | -- | Peer address info normally extracted from peer list or peer | 489 | -- | Peer address info normally extracted from peer list or peer |
490 | -- compact list encoding. | 490 | -- compact list encoding. |
491 | data PeerAddr = PeerAddr { | 491 | data PeerAddr = PeerAddr { |
492 | peerID :: Maybe PeerID | 492 | peerID :: Maybe PeerId |
493 | , peerIP :: HostAddress | 493 | , peerIP :: HostAddress |
494 | , peerPort :: PortNumber | 494 | , peerPort :: PortNumber |
495 | } deriving (Show, Eq, Ord) | 495 | } deriving (Show, Eq, Ord) |