summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/dhtd.hs3
-rw-r--r--src/Network/DatagramServer/Mainline.hs2
-rw-r--r--src/Network/DatagramServer/Tox.hs2
-rw-r--r--src/Network/DatagramServer/Types.hs6
4 files changed, 10 insertions, 3 deletions
diff --git a/examples/dhtd.hs b/examples/dhtd.hs
index 15369ede..2c4f0778 100644
--- a/examples/dhtd.hs
+++ b/examples/dhtd.hs
@@ -231,9 +231,6 @@ instance Kademlia Tox.Message where
231 231
232instance Pretty (NodeId Tox.Message) where pPrint (Tox.NodeId nid) = encodeHexDoc nid 232instance Pretty (NodeId Tox.Message) where pPrint (Tox.NodeId nid) = encodeHexDoc nid
233 233
234instance Read (NodeId KMessageOf) where
235 readsPrec d s = map (\(ih,s) -> (toNodeId (ih::InfoHash),s)) $ readsPrec d s
236instance Read (NodeId Tox.Message) where -- TODO
237instance Serialize (FindNode Tox.Message IPv4) where 234instance Serialize (FindNode Tox.Message IPv4) where
238 get = error "TODO get 1" 235 get = error "TODO get 1"
239 put = error "TODO put 2" 236 put = error "TODO put 2"
diff --git a/src/Network/DatagramServer/Mainline.hs b/src/Network/DatagramServer/Mainline.hs
index c127c07b..87825ce0 100644
--- a/src/Network/DatagramServer/Mainline.hs
+++ b/src/Network/DatagramServer/Mainline.hs
@@ -358,3 +358,5 @@ instance (Typeable tid, BEncode tid) => BEncode (KError tid) where
358 {-# INLINE fromBEncode #-} 358 {-# INLINE fromBEncode #-}
359#endif 359#endif
360 360
361instance Read (NodeId KMessageOf) where readsPrec d s = map (\(w,xs) -> (NodeId w, xs)) $ decodeHex s
362
diff --git a/src/Network/DatagramServer/Tox.hs b/src/Network/DatagramServer/Tox.hs
index 2c432d70..b323a4df 100644
--- a/src/Network/DatagramServer/Tox.hs
+++ b/src/Network/DatagramServer/Tox.hs
@@ -286,3 +286,5 @@ instance WireFormat ByteString Message where
286 286
287 decodeHeaders ctx bs = runGet getMessage bs >>= decipher ctx 287 decodeHeaders ctx bs = runGet getMessage bs >>= decipher ctx
288 encodeHeaders ctx msg = runPut $ putMessage $ encipher ctx msg 288 encodeHeaders ctx msg = runPut $ putMessage $ encipher ctx msg
289
290instance Read (NodeId Message) where readsPrec d s = map (\(w,xs) -> (NodeId w, xs)) $ decodeHex s
diff --git a/src/Network/DatagramServer/Types.hs b/src/Network/DatagramServer/Types.hs
index ea38d46e..e2d56dc0 100644
--- a/src/Network/DatagramServer/Types.hs
+++ b/src/Network/DatagramServer/Types.hs
@@ -10,6 +10,7 @@
10{-# LANGUAGE MultiParamTypeClasses #-} 10{-# LANGUAGE MultiParamTypeClasses #-}
11{-# LANGUAGE RankNTypes #-} 11{-# LANGUAGE RankNTypes #-}
12{-# LANGUAGE ScopedTypeVariables #-} 12{-# LANGUAGE ScopedTypeVariables #-}
13{-# LANGUAGE TupleSections #-}
13{-# LANGUAGE TypeFamilies #-} 14{-# LANGUAGE TypeFamilies #-}
14{-# LANGUAGE StandaloneDeriving #-} 15{-# LANGUAGE StandaloneDeriving #-}
15module Network.DatagramServer.Types 16module Network.DatagramServer.Types
@@ -336,6 +337,11 @@ class Envelope envelope => WireFormat raw envelope where
336encodeHexDoc :: Serialize x => x -> Doc 337encodeHexDoc :: Serialize x => x -> Doc
337encodeHexDoc nid = PP.text $ Char8.unpack $ Base16.encode $ S.encode nid 338encodeHexDoc nid = PP.text $ Char8.unpack $ Base16.encode $ S.encode nid
338 339
340decodeHex :: Serialize x => String -> [(x,String)]
341decodeHex s = either (const []) (pure . (, Char8.unpack ybs)) $ S.decode xbs
342 where
343 (xbs,ybs) = Base16.decode $ Char8.pack s
344
339-- FIXME Orphan Serialize intance for large words 345-- FIXME Orphan Serialize intance for large words
340instance (Serialize a, Serialize b) => Serialize (LargeKey a b) where 346instance (Serialize a, Serialize b) => Serialize (LargeKey a b) where
341 put (LargeKey lo hi) = put hi >> put lo 347 put (LargeKey lo hi) = put hi >> put lo