Example #1
0
        /// <summary>
        /// Handles a remote ping request
        /// </summary>
        /// <returns>An awaitable task.</returns>
        /// <param name="self">The node information.</param>
        /// <param name="req">The request to handle.</param>
        private static Task HandlePingRequestAsync(PeerInfo self, ConnectionRequest req)
        {
            log.Debug($"Converting ping request to node lookup ({req.RequestID})");

            return(HandleNodeLookupRequestAsync(self, new ConnectionRequest()
            {
                Key = self.Key,
                EndPoint = self.Address,
                RequestID = req.RequestID,
                Response = req.Response,
                Request = new Protocol.Request()
                {
                    Target = self.Key,
                    Operation = Protocol.Operation.Ping
                }
            }));
        }
Example #2
0
        /// <summary>
        /// Handles a remote store request
        /// </summary>
        /// <returns>An awaitable task.</returns>
        /// <param name="self">The node information.</param>
        /// <param name="request">The request to handle.</param>
        private static async Task HandleStoreRequestAsync(PeerInfo self, ConnectionRequest request)
        {
            log.Debug($"Query MRU ({request.RequestID})");
            var res = await Channels.MRURequests.Get()
                      .SendAddAsync(request.Request.Target, request.Request.Data);

            log.Debug($"Got response, forwarding to requester ({request.RequestID}) ...");
            await request.Response.WriteAsync(new ConnectionResponse()
            {
                RequestID = request.RequestID,
                Response  = new Protocol.Response()
                {
                    Self    = self,
                    Success = res,
                }
            });

            log.Debug($"Completed store query ({request.RequestID})");
        }