module Blockchain.Communication ( sendMessage ) where import Control.Monad.IO.Class import Data.Binary.Put import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL import Network.Simple.TCP import Blockchain.Data.RLP import Blockchain.Context import Blockchain.Display import Blockchain.Data.Wire ethereumHeader::B.ByteString->Put ethereumHeader payload = do putWord32be 0x22400891 putWord32be $ fromIntegral $ B.length payload putByteString payload sendCommand::Socket->B.ByteString->IO () sendCommand socket payload = do let theData2 = runPut $ ethereumHeader payload send socket $ B.concat $ BL.toChunks theData2 sendMessage::Socket->Message->ContextM () sendMessage socket msg = do displayMessage True msg liftIO $ sendCommand socket $ rlpSerialize $ wireMessage2Obj msg