packages feed

ethereum-client-haskell-0.0.2: src/Blockchain/Communication.hs

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