diff options
Diffstat (limited to 'src/Network/BitTorrent/PeerWire')
-rw-r--r-- | src/Network/BitTorrent/PeerWire/Block.hs | 14 | ||||
-rw-r--r-- | src/Network/BitTorrent/PeerWire/Handshake.hs | 9 | ||||
-rw-r--r-- | src/Network/BitTorrent/PeerWire/Message.hs | 16 |
3 files changed, 24 insertions, 15 deletions
diff --git a/src/Network/BitTorrent/PeerWire/Block.hs b/src/Network/BitTorrent/PeerWire/Block.hs index fbc65338..dea37321 100644 --- a/src/Network/BitTorrent/PeerWire/Block.hs +++ b/src/Network/BitTorrent/PeerWire/Block.hs | |||
@@ -1,3 +1,5 @@ | |||
1 | {-# LANGUAGE RecordWildCards #-} | ||
2 | {-# LANGUAGE OverloadedStrings #-} | ||
1 | module Network.BitTorrent.PeerWire.Block | 3 | module Network.BitTorrent.PeerWire.Block |
2 | ( BlockIx(..) | 4 | ( BlockIx(..) |
3 | , Block(..), blockSize | 5 | , Block(..), blockSize |
@@ -16,6 +18,7 @@ import Data.ByteString (ByteString) | |||
16 | import qualified Data.ByteString as B | 18 | import qualified Data.ByteString as B |
17 | import Data.Int | 19 | import Data.Int |
18 | import Data.Serialize | 20 | import Data.Serialize |
21 | import Text.PrettyPrint | ||
19 | 22 | ||
20 | 23 | ||
21 | type BlockLIx = Int | 24 | type BlockLIx = Int |
@@ -51,10 +54,11 @@ instance Serialize BlockIx where | |||
51 | putInt (ixLength ix) | 54 | putInt (ixLength ix) |
52 | {-# INLINE put #-} | 55 | {-# INLINE put #-} |
53 | 56 | ||
54 | ppBlockIx :: BlockIx -> String | 57 | ppBlockIx :: BlockIx -> Doc |
55 | ppBlockIx ix = "piece = " ++ show (ixPiece ix) ++ ", " | 58 | ppBlockIx BlockIx {..} = |
56 | ++ "offset = " ++ show (ixOffset ix) ++ ", " | 59 | "piece = " <> int ixPiece <> "," <+> |
57 | ++ "length = " ++ show (ixLength ix) | 60 | "offset = " <> int ixOffset <> "," <+> |
61 | "length = " <> int ixLength | ||
58 | 62 | ||
59 | data Block = Block { | 63 | data Block = Block { |
60 | -- | Zero-based piece index. | 64 | -- | Zero-based piece index. |
@@ -67,7 +71,7 @@ data Block = Block { | |||
67 | , blkData :: ByteString | 71 | , blkData :: ByteString |
68 | } deriving (Show, Eq) | 72 | } deriving (Show, Eq) |
69 | 73 | ||
70 | ppBlock :: Block -> String | 74 | ppBlock :: Block -> Doc |
71 | ppBlock = ppBlockIx . blockIx | 75 | ppBlock = ppBlockIx . blockIx |
72 | 76 | ||
73 | blockSize :: Block -> Int | 77 | blockSize :: Block -> Int |
diff --git a/src/Network/BitTorrent/PeerWire/Handshake.hs b/src/Network/BitTorrent/PeerWire/Handshake.hs index 6f4598ae..ff768cae 100644 --- a/src/Network/BitTorrent/PeerWire/Handshake.hs +++ b/src/Network/BitTorrent/PeerWire/Handshake.hs | |||
@@ -11,6 +11,7 @@ | |||
11 | -- peer. | 11 | -- peer. |
12 | -- | 12 | -- |
13 | {-# LANGUAGE OverloadedStrings #-} | 13 | {-# LANGUAGE OverloadedStrings #-} |
14 | {-# LANGUAGE RecordWildCards #-} | ||
14 | module Network.BitTorrent.PeerWire.Handshake | 15 | module Network.BitTorrent.PeerWire.Handshake |
15 | ( Handshake(..), handshakeCaps | 16 | ( Handshake(..), handshakeCaps |
16 | , handshake | 17 | , handshake |
@@ -27,6 +28,8 @@ import Data.ByteString (ByteString) | |||
27 | import qualified Data.ByteString as B | 28 | import qualified Data.ByteString as B |
28 | import qualified Data.ByteString.Char8 as BC | 29 | import qualified Data.ByteString.Char8 as BC |
29 | import Data.Serialize as S | 30 | import Data.Serialize as S |
31 | import Text.PrettyPrint | ||
32 | |||
30 | import Network | 33 | import Network |
31 | import Network.Socket.ByteString | 34 | import Network.Socket.ByteString |
32 | 35 | ||
@@ -77,9 +80,9 @@ handshakeCaps :: Handshake -> Capabilities | |||
77 | handshakeCaps = hsReserved | 80 | handshakeCaps = hsReserved |
78 | 81 | ||
79 | -- | Format handshake in human readable form. | 82 | -- | Format handshake in human readable form. |
80 | ppHandshake :: Handshake -> String | 83 | ppHandshake :: Handshake -> Doc |
81 | ppHandshake hs = BC.unpack (hsProtocol hs) ++ " " | 84 | ppHandshake Handshake {..} = |
82 | ++ ppClientInfo (clientInfo (hsPeerID hs)) | 85 | text (BC.unpack hsProtocol) <+> ppClientInfo (clientInfo hsPeerID) |
83 | 86 | ||
84 | -- | Get handshake message size in bytes from the length of protocol string. | 87 | -- | Get handshake message size in bytes from the length of protocol string. |
85 | handshakeSize :: Word8 -> Int | 88 | handshakeSize :: Word8 -> Int |
diff --git a/src/Network/BitTorrent/PeerWire/Message.hs b/src/Network/BitTorrent/PeerWire/Message.hs index f5ad2693..6515fdf2 100644 --- a/src/Network/BitTorrent/PeerWire/Message.hs +++ b/src/Network/BitTorrent/PeerWire/Message.hs | |||
@@ -1,3 +1,4 @@ | |||
1 | {-# LANGUAGE OverloadedStrings #-} | ||
1 | module Network.BitTorrent.PeerWire.Message | 2 | module Network.BitTorrent.PeerWire.Message |
2 | ( Message(..) | 3 | ( Message(..) |
3 | , Bitfield | 4 | , Bitfield |
@@ -7,6 +8,7 @@ module Network.BitTorrent.PeerWire.Message | |||
7 | import Control.Applicative | 8 | import Control.Applicative |
8 | import qualified Data.ByteString as B | 9 | import qualified Data.ByteString as B |
9 | import Data.Serialize | 10 | import Data.Serialize |
11 | import Text.PrettyPrint | ||
10 | import Network | 12 | import Network |
11 | 13 | ||
12 | import Network.BitTorrent.PeerWire.Block | 14 | import Network.BitTorrent.PeerWire.Block |
@@ -141,10 +143,10 @@ instance Serialize Message where | |||
141 | -- compact and suitable for logging: only useful information but not | 143 | -- compact and suitable for logging: only useful information but not |
142 | -- payload bytes. | 144 | -- payload bytes. |
143 | -- | 145 | -- |
144 | ppMessage :: Message -> String | 146 | ppMessage :: Message -> Doc |
145 | ppMessage (Bitfield _) = "Bitfield " | 147 | ppMessage (Bitfield _) = "Bitfield" |
146 | ppMessage (Piece blk) = "Piece " ++ ppBlock blk | 148 | ppMessage (Piece blk) = "Piece" <+> ppBlock blk |
147 | ppMessage (Cancel ix) = "Cancel " ++ ppBlockIx ix | 149 | ppMessage (Cancel ix) = "Cancel" <+> ppBlockIx ix |
148 | ppMessage (SuggestPiece pix) = "Suggest" ++ show pix | 150 | ppMessage (SuggestPiece pix) = "Suggest" <+> int pix |
149 | ppMessage (RejectRequest ix) = "Reject" ++ ppBlockIx ix | 151 | ppMessage (RejectRequest ix) = "Reject" <+> ppBlockIx ix |
150 | ppMessage msg = show msg \ No newline at end of file | 152 | ppMessage msg = text (show msg) \ No newline at end of file |