]> git.rkrishnan.org Git - functorrent.git/commitdiff
sendMsg: equiv of getMsg but on the sending side
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Tue, 21 Jul 2015 06:21:33 +0000 (11:51 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Tue, 21 Jul 2015 06:21:33 +0000 (11:51 +0530)
src/FuncTorrent/Peer.hs

index f596033f0f0db5ae01ba31a10b4ff3db1cdbbad7..70e89d8c8f245c9593f32479897a8808721ee360 100644 (file)
@@ -8,10 +8,10 @@ import Prelude hiding (lookup, concat, replicate, splitAt, empty, writeFile)
 
 import System.IO (Handle, BufferMode(..), hSetBuffering)
 import Data.ByteString (ByteString, pack, unpack, concat, hGet, hPut, singleton, writeFile)
 
 import System.IO (Handle, BufferMode(..), hSetBuffering)
 import Data.ByteString (ByteString, pack, unpack, concat, hGet, hPut, singleton, writeFile)
-import Data.ByteString.Lazy (fromStrict, fromChunks)
+import Data.ByteString.Lazy (fromStrict, fromChunks, toStrict)
 import qualified Data.ByteString.Char8 as BC (replicate, pack, length)
 import Network (connectTo, PortID(..))
 import qualified Data.ByteString.Char8 as BC (replicate, pack, length)
 import Network (connectTo, PortID(..))
-import Data.Binary (Binary(..), decode)
+import Data.Binary (Binary(..), decode, encode)
 import Data.Binary.Put (putWord32be, putWord16be, putWord8)
 import Data.Binary.Get (getWord32be, getWord16be, getWord8, runGet)
 import Control.Monad (replicateM, liftM, forever)
 import Data.Binary.Put (putWord32be, putWord16be, putWord8)
 import Data.Binary.Get (getWord32be, getWord16be, getWord8, runGet)
 import Control.Monad (replicateM, liftM, forever)
@@ -166,6 +166,11 @@ getMsg h = do
     msg <- hGet h l
     return $ decode $ fromStrict $ concat [lBS, msg]
 
     msg <- hGet h l
     return $ decode $ fromStrict $ concat [lBS, msg]
 
+sendMsg :: Handle -> PeerMsg -> IO ()
+sendMsg h msg =
+  let bsMsg = toStrict $ encode msg
+  in
+   hPut h bsMsg
 
 bsToInt :: ByteString -> Int
 bsToInt x = fromIntegral (runGet getWord32be (fromChunks (return x)))
 
 bsToInt :: ByteString -> Int
 bsToInt x = fromIntegral (runGet getWord32be (fromChunks (return x)))