public SendQueryEventArgs(IPEndPoint endpoint, QueryMessage query, ResponseMessage response)
     : base(null)
 {
     EndPoint = endpoint;
     Query = query;
     Response = response;
 }
        public SendQueryTask(DhtEngine engine, QueryMessage query, Node node, int retries)
        {
            if (engine == null)
                throw new ArgumentNullException(nameof(engine));
            if (query == null)
                throw new ArgumentNullException(nameof(query));
            if (node == null)
                throw new ArgumentNullException(nameof(node));

            this._engine = engine;
            this._query = query;
            Target = node;
            this._retries = retries;
            Retries = retries;
        }
 public GetPeersResponse(BEncodedDictionary d, QueryMessage m)
     : base(d, m)
 {
 }
 public AnnouncePeerResponse(BEncodedDictionary d, QueryMessage m)
     : base(d, m)
 {
 }
 public FindNodeResponse(BEncodedDictionary d, QueryMessage m)
     : base(d, m)
 {
     
 }
 public SendQueryTask(DhtEngine engine, QueryMessage query, Node node)
     : this(engine, query, node, 3)
 {
 }
 public static bool UnregisterSend(QueryMessage message)
 {
     return Messages.Remove(message.TransactionId);
 }
 public static void RegisterSend(QueryMessage message)
 {
     Messages.Add(message.TransactionId, message);
 }
 public PingResponse(BEncodedDictionary d, QueryMessage m)
     : base(d, m)
 {
 }
 private void RaiseMessageSent(IPEndPoint endpoint, QueryMessage query, ResponseMessage response)
 {
     var h = QuerySent;
     h?.Invoke(this, new SendQueryEventArgs(endpoint, query, response));
 }