/// <summary> /// Processes GetNeighbourNodesByDistanceLocalRequest message from client. /// <para>Obtains information about the profile server's neighborhood and initiates sending updates to it.</para> /// </summary> /// <param name="Client">TCP client that sent the request.</param> /// <param name="MessageBuilder">Client's message builder.</param> /// <param name="RequestMessage">Full request message.</param> /// <param name="KeepAlive">This is set to true if KeepAliveAndSendUpdates in the request was set.</param> /// <returns>Response message to be sent to the client.</returns> public LocProtocolMessage ProcessMessageGetNeighbourNodesByDistanceLocalRequest(TcpClient Client, LocMessageBuilder MessageBuilder, LocProtocolMessage RequestMessage, out bool KeepAlive) { log.Trace("()"); LocProtocolMessage res = null; GetNeighbourNodesByDistanceLocalRequest getNeighbourNodesByDistanceLocalRequest = RequestMessage.Request.LocalService.GetNeighbourNodes; KeepAlive = getNeighbourNodesByDistanceLocalRequest.KeepAliveAndSendUpdates; List <NodeInfo> neighborList = new List <NodeInfo>(); lock (neighborsLock) { foreach (ProfileServer ps in neighbors.Values) { NodeInfo ni = ps.GetNodeInfo(); neighborList.Add(ni); } } res = MessageBuilder.CreateGetNeighbourNodesByDistanceLocalResponse(RequestMessage, neighborList); log.Trace("(-):*.Response.Status={0}", res.Response.Status); return(res); }
/// <summary> /// Creates a new GetNeighbourNodesByDistanceLocalRequest message. /// </summary> /// <param name="KeepAlive">If set to true, the LOC server will send neighborhood updates over the open connection.</param> /// <returns>GetNeighbourNodesByDistanceLocalRequest message that is ready to be sent.</returns> public Message CreateGetNeighbourNodesByDistanceLocalRequest(bool KeepAlive = true) { GetNeighbourNodesByDistanceLocalRequest getNeighbourNodesByDistanceLocalRequest = new GetNeighbourNodesByDistanceLocalRequest(); getNeighbourNodesByDistanceLocalRequest.KeepAliveAndSendUpdates = KeepAlive; Message res = CreateLocalServiceRequest(); res.Request.LocalService.GetNeighbourNodes = getNeighbourNodesByDistanceLocalRequest; return(res); }
/// <summary> /// Processes GetNeighbourNodesByDistanceLocalRequest message from client. /// <para>Obtains information about the profile server's neighborhood and initiates sending updates to it.</para> /// </summary> /// <param name="Client">TCP client that sent the request.</param> /// <param name="MessageBuilder">Client's message builder.</param> /// <param name="RequestMessage">Full request message.</param> /// <param name="KeepAlive">This is set to true if KeepAliveAndSendUpdates in the request was set.</param> /// <returns>Response message to be sent to the client.</returns> public Message ProcessMessageGetNeighbourNodesByDistanceLocalRequest(TcpClient Client, MessageBuilderLocNet MessageBuilder, Message RequestMessage, out bool KeepAlive) { log.Trace("()"); Message res = null; GetNeighbourNodesByDistanceLocalRequest getNeighbourNodesByDistanceLocalRequest = RequestMessage.Request.LocalService.GetNeighbourNodes; KeepAlive = getNeighbourNodesByDistanceLocalRequest.KeepAliveAndSendUpdates; List <NodeInfo> neighborList; lock (neighborsLock) { neighborList = new List <NodeInfo>(neighbors); } res = MessageBuilder.CreateGetNeighbourNodesByDistanceLocalResponse(RequestMessage, neighborList); log.Trace("(-):*.Response.Status={0}", res.Response.Status); return(res); }