sendMsg,
getMsg,
Peer(..),
+ makePeer,
PeerMsg(..)
) where
import System.IO (Handle)
import Data.ByteString (ByteString, pack, unpack, concat, hGet, hPut, singleton)
import Data.ByteString.Lazy (fromStrict, fromChunks, toStrict)
+import Data.ByteString.Char8 as BC (splitAt)
import qualified Data.ByteString.Char8 as BC (replicate, pack)
import Control.Monad (replicateM, liftM)
import Control.Applicative (liftA3)
import Data.Binary.Put (putWord32be, putWord16be, putWord8)
import Data.Binary.Get (getWord32be, getWord16be, getWord8, runGet)
--- | Peer is a PeerID, IP address, port tuple
-data Peer = Peer ID IP Port
+import FuncTorrent.Utils (toIP, toPort)
+
+-- | Peer is a IP address, port tuple
+data Peer = Peer IP Port
deriving (Show, Eq)
type ID = String
bsToInt :: ByteString -> Int
bsToInt x = fromIntegral (runGet getWord32be (fromChunks (return x)))
+
+makePeer :: ByteString -> Peer
+makePeer peer = Peer (toIP ip') (toPort port')
+ where (ip', port') = splitAt 4 peer