diff options
Diffstat (limited to 'src/Network/DHT/Mainline.hs')
-rw-r--r-- | src/Network/DHT/Mainline.hs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Network/DHT/Mainline.hs b/src/Network/DHT/Mainline.hs new file mode 100644 index 00000000..7cd33c0d --- /dev/null +++ b/src/Network/DHT/Mainline.hs | |||
@@ -0,0 +1,22 @@ | |||
1 | {-# LANGUAGE LambdaCase #-} | ||
2 | module Network.DHT.Mainline where | ||
3 | |||
4 | import Network.RPC | ||
5 | import Network.KRPC.Message | ||
6 | import Data.BEncode as BE | ||
7 | import qualified Data.ByteString.Lazy as L | ||
8 | |||
9 | mainline :: Messaging KMessageOf TransactionId BValue | ||
10 | mainline = Messaging | ||
11 | { messageClass = \case Q _ -> Query | ||
12 | R _ -> Response | ||
13 | E _ -> Error | ||
14 | , messageTransaction = \case Q q -> queryId q | ||
15 | R r -> respId r | ||
16 | E e -> errorId e | ||
17 | , messagePayload = \case Q q -> queryArgs q | ||
18 | R r -> respVals r | ||
19 | E e -> error "TODO: messagePayload for KError" | ||
20 | , encodePayload = fmap (L.toStrict . BE.encode) | ||
21 | , decodePayload = sequence . fmap BE.decode | ||
22 | } | ||