diff options
author | joe <joe@jerkface.net> | 2017-06-06 21:05:23 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2017-06-06 21:05:23 -0400 |
commit | cb1a1fb883527c1c6075c97d7262e41729a9b924 (patch) | |
tree | 7d673d59c2fc68057b2c2d87c1a407e1938efb4d /src/Network/BitTorrent/DHT/Query.hs | |
parent | 24df9a12a9240aaed8741d60e4b0b9cbf59a9fd9 (diff) |
WIP: Adapting DHT to Tox network (part 3).
Diffstat (limited to 'src/Network/BitTorrent/DHT/Query.hs')
-rw-r--r-- | src/Network/BitTorrent/DHT/Query.hs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/Network/BitTorrent/DHT/Query.hs b/src/Network/BitTorrent/DHT/Query.hs index a1934014..e1104cb9 100644 --- a/src/Network/BitTorrent/DHT/Query.hs +++ b/src/Network/BitTorrent/DHT/Query.hs | |||
@@ -72,7 +72,6 @@ import Data.Either | |||
72 | import Data.List as L | 72 | import Data.List as L |
73 | import Data.Monoid | 73 | import Data.Monoid |
74 | import Data.Text as T | 74 | import Data.Text as T |
75 | import Data.BEncode (BValue) | ||
76 | import qualified Data.Set as Set | 75 | import qualified Data.Set as Set |
77 | ;import Data.Set (Set) | 76 | ;import Data.Set (Set) |
78 | import Network | 77 | import Network |
@@ -85,13 +84,20 @@ import Network.KRPC hiding (Options, def) | |||
85 | import Network.KRPC.Message (ReflectedIP(..)) | 84 | import Network.KRPC.Message (ReflectedIP(..)) |
86 | import Network.KRPC.Manager (QueryFailure(..)) | 85 | import Network.KRPC.Manager (QueryFailure(..)) |
87 | import Data.Torrent | 86 | import Data.Torrent |
88 | import Network.BitTorrent.Address | ||
89 | import Network.BitTorrent.DHT.Message | 87 | import Network.BitTorrent.DHT.Message |
90 | import Network.BitTorrent.DHT.Routing as R | 88 | import Network.BitTorrent.DHT.Routing as R |
91 | import Network.BitTorrent.DHT.Session | 89 | import Network.BitTorrent.DHT.Session |
92 | import Control.Concurrent.STM | 90 | import Control.Concurrent.STM |
93 | import qualified Network.BitTorrent.DHT.Search as Search | 91 | import qualified Network.BitTorrent.DHT.Search as Search |
92 | #ifdef VERSION_bencoding | ||
93 | import Network.BitTorrent.Address | ||
94 | import Data.BEncode (BValue) | ||
94 | import Network.DHT.Mainline | 95 | import Network.DHT.Mainline |
96 | #else | ||
97 | import Network.BitTorrent.Address hiding (NodeId) | ||
98 | import Data.ByteString (ByteString) | ||
99 | import Data.Tox | ||
100 | #endif | ||
95 | 101 | ||
96 | {----------------------------------------------------------------------- | 102 | {----------------------------------------------------------------------- |
97 | -- Handlers | 103 | -- Handlers |
@@ -99,12 +105,23 @@ import Network.DHT.Mainline | |||
99 | 105 | ||
100 | nodeHandler :: ( Address ip | 106 | nodeHandler :: ( Address ip |
101 | , KRPC (Query a) (Response b) | 107 | , KRPC (Query a) (Response b) |
108 | #ifdef VERSION_bencoding | ||
102 | , Envelope (Query a) (Response b) ~ BValue ) | 109 | , Envelope (Query a) (Response b) ~ BValue ) |
110 | #else | ||
111 | , Envelope (Query a) (Response b) ~ ByteString ) | ||
112 | #endif | ||
103 | => (NodeAddr ip -> a -> DHT ip b) -> NodeHandler ip | 113 | => (NodeAddr ip -> a -> DHT ip b) -> NodeHandler ip |
114 | #ifdef VERSION_bencoding | ||
104 | nodeHandler action = handler mainline $ \ sockAddr qry -> do | 115 | nodeHandler action = handler mainline $ \ sockAddr qry -> do |
105 | let remoteId = queringNodeId qry | 116 | let remoteId = queringNodeId qry |
106 | read_only = queryIsReadOnly qry | 117 | read_only = queryIsReadOnly qry |
107 | q = queryParams qry | 118 | q = queryParams qry |
119 | #else | ||
120 | nodeHandler action = handler (error "TODO TOX Messaging") $ \ sockAddr qry -> do | ||
121 | let remoteId = msgClient qry | ||
122 | read_only = False | ||
123 | q = msgPayload qry | ||
124 | #endif | ||
108 | case fromSockAddr sockAddr of | 125 | case fromSockAddr sockAddr of |
109 | Nothing -> throwIO BadAddress | 126 | Nothing -> throwIO BadAddress |
110 | Just naddr -> do | 127 | Just naddr -> do |