1 {-# LANGUAGE OverloadedStrings #-}
2 module FuncTorrent.Peer
7 import Prelude hiding (lookup, concat, replicate, splitAt)
9 import Data.ByteString.Char8 (ByteString, pack, concat, replicate)
10 import Data.ByteString.Lazy (toChunks)
11 import Data.Int (Int8)
12 import qualified Data.Binary as Bin (encode)
14 import FuncTorrent.Bencode (InfoDict)
15 import FuncTorrent.Metainfo (infoHash)
17 -- | Peer is a IP address, port tuple
18 data Peer = Peer String Integer
21 handShakeMsg :: InfoDict -> String -> ByteString
22 handShakeMsg m peer_id = concat [pstrlen, pstr, reserved, infoH, peerID]
23 where pstrlen = concat $ toChunks $ Bin.encode (19 :: Int8)
24 pstr = pack "BitTorrent protocol"
25 reserved = replicate 8 '\0'