コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }