diff options
author | joe <joe@jerkface.net> | 2017-07-03 18:46:14 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2017-07-03 18:46:14 -0400 |
commit | 81bcffd68c9997b8e4b5f8c2d4cb1e4db4c62153 (patch) | |
tree | 123f6236b1f4d4f70f2d0fc260e5d0b28159741c /src/Network/DHT | |
parent | be15a1ceba3b87f845d3b56915207457a94394ee (diff) |
Moved node-id out of Query/Response. It can be either in the
envelope (Tox) or in the query/response payload (Mainline).
Diffstat (limited to 'src/Network/DHT')
-rw-r--r-- | src/Network/DHT/Mainline.hs | 12 | ||||
-rw-r--r-- | src/Network/DHT/Types.hs | 8 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/Network/DHT/Mainline.hs b/src/Network/DHT/Mainline.hs index e5517a3a..d68755a7 100644 --- a/src/Network/DHT/Mainline.hs +++ b/src/Network/DHT/Mainline.hs | |||
@@ -154,7 +154,7 @@ read_only_key = "ro" | |||
154 | #ifdef VERSION_bencoding | 154 | #ifdef VERSION_bencoding |
155 | instance BEncode a => BEncode (Query KMessageOf a) where | 155 | instance BEncode a => BEncode (Query KMessageOf a) where |
156 | toBEncode Query {..} = toDict $ | 156 | toBEncode Query {..} = toDict $ |
157 | BDict.union ( node_id_key .=! queringNodeId | 157 | BDict.union ( node_id_key .=! queringNodeId queryExtra |
158 | .: read_only_key .=? bool Nothing (Just (1 :: Integer)) (queryIsReadOnly queryExtra) | 158 | .: read_only_key .=? bool Nothing (Just (1 :: Integer)) (queryIsReadOnly queryExtra) |
159 | .: endDict) | 159 | .: endDict) |
160 | (dict (toBEncode queryParams)) | 160 | (dict (toBEncode queryParams)) |
@@ -162,9 +162,9 @@ instance BEncode a => BEncode (Query KMessageOf a) where | |||
162 | dict (BDict d) = d | 162 | dict (BDict d) = d |
163 | dict _ = error "impossible: instance BEncode (Query a)" | 163 | dict _ = error "impossible: instance BEncode (Query a)" |
164 | 164 | ||
165 | fromBEncode v = do | 165 | fromBEncode v = |
166 | Query <$> fromDict (field (req node_id_key)) v | 166 | Query <$> (MainlineQuery <$> fromDict (field (req node_id_key)) v |
167 | <*> fromDict (IsReadOnlyQuery . fromMaybe False <$>? read_only_key) v | 167 | <*> fromDict (fromMaybe False <$>? read_only_key) v) |
168 | <*> fromBEncode v | 168 | <*> fromBEncode v |
169 | #else | 169 | #else |
170 | data Query a = Query a | 170 | data Query a = Query a |
@@ -174,11 +174,11 @@ data Query a = Query a | |||
174 | instance BEncode a => BEncode (Response KMessageOf a) where | 174 | instance BEncode a => BEncode (Response KMessageOf a) where |
175 | toBEncode = toBEncode . toQuery | 175 | toBEncode = toBEncode . toQuery |
176 | where | 176 | where |
177 | toQuery (Response nid MainlineResponseData a) = Query nid (IsReadOnlyQuery False) a | 177 | toQuery (Response (MainlineResponse nid) a) = Query (MainlineQuery nid False) a |
178 | 178 | ||
179 | fromBEncode b = fromQuery <$> fromBEncode b | 179 | fromBEncode b = fromQuery <$> fromBEncode b |
180 | where | 180 | where |
181 | fromQuery (Query nid _ a) = Response nid MainlineResponseData a | 181 | fromQuery (Query (MainlineQuery nid _) a) = Response (MainlineResponse nid) a |
182 | #else | 182 | #else |
183 | data Response KMessageOf a = Response KMessageOf a | 183 | data Response KMessageOf a = Response KMessageOf a |
184 | #endif | 184 | #endif |
diff --git a/src/Network/DHT/Types.hs b/src/Network/DHT/Types.hs index bd2825fb..0102a53f 100644 --- a/src/Network/DHT/Types.hs +++ b/src/Network/DHT/Types.hs | |||
@@ -26,9 +26,8 @@ data TableParameters msg ip u = TableParameters | |||
26 | -- | All queries have an \"id\" key and value containing the node ID | 26 | -- | All queries have an \"id\" key and value containing the node ID |
27 | -- of the querying node. | 27 | -- of the querying node. |
28 | data Query dht a = Query | 28 | data Query dht a = Query |
29 | { queringNodeId :: NodeId dht -- ^ node id of /quering/ node; | 29 | { queryExtra :: QueryExtra dht -- ^ DHT-specific query headers |
30 | , queryExtra :: QueryExtra dht -- , queryIsReadOnly :: Bool -- node is read-only as per BEP 43 | 30 | , queryParams :: a -- ^ query parameters. |
31 | , queryParams :: a -- ^ query parameters. | ||
32 | } deriving (Typeable,Generic) | 31 | } deriving (Typeable,Generic) |
33 | 32 | ||
34 | deriving instance (Eq (NodeId dht), Eq (QueryExtra dht), Eq a ) => Eq (Query dht a) | 33 | deriving instance (Eq (NodeId dht), Eq (QueryExtra dht), Eq a ) => Eq (Query dht a) |
@@ -37,8 +36,7 @@ deriving instance (Show (NodeId dht), Show (QueryExtra dht), Show a ) => Show (Q | |||
37 | -- | All responses have an \"id\" key and value containing the node ID | 36 | -- | All responses have an \"id\" key and value containing the node ID |
38 | -- of the responding node. | 37 | -- of the responding node. |
39 | data Response dht a = Response | 38 | data Response dht a = Response |
40 | { queredNodeId :: NodeId dht -- ^ node id of /quered/ node; | 39 | { responseExtra :: ResponseExtra dht |
41 | , responseExtra :: ResponseExtra dht | ||
42 | , responseVals :: a -- ^ query result. | 40 | , responseVals :: a -- ^ query result. |
43 | } deriving (Typeable,Generic) | 41 | } deriving (Typeable,Generic) |
44 | 42 | ||