blob: 7cd33c0db5c486bb317404266b2367a984e09380 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{-# LANGUAGE LambdaCase #-}
module Network.DHT.Mainline where
import Network.RPC
import Network.KRPC.Message
import Data.BEncode as BE
import qualified Data.ByteString.Lazy as L
mainline :: Messaging KMessageOf TransactionId BValue
mainline = Messaging
{ messageClass = \case Q _ -> Query
R _ -> Response
E _ -> Error
, messageTransaction = \case Q q -> queryId q
R r -> respId r
E e -> errorId e
, messagePayload = \case Q q -> queryArgs q
R r -> respVals r
E e -> error "TODO: messagePayload for KError"
, encodePayload = fmap (L.toStrict . BE.encode)
, decodePayload = sequence . fmap BE.decode
}
|