示例#1
0
        public void HandleRequest(Message request, Message response)
        {
            //System.Diagnostics.Debug.WriteLine(string.Format(
            //    "{0}\t{1} received {2}",
            //    DateTime.Now,
            //    this.node.Entry.Address,
            //    sourceEndPoint.Port));

            // TODO: Here we handle the messages that get received by the node.
            // TODO: Call methods on the Node class to merge hash rings and do failure detection.
            // TODO: Liskov substitution principle violation that I'm not happy about.

            if (response != null)
            {
                response.Source = this.node.Entry.Address;

                var heartbeat = new HeartBeat();
                heartbeat.Nodes = node.Nodes;

                response.Parts.Add(heartbeat.GetType().Name.ToLowerInvariant(), JsonSerializer.SerializeToString(heartbeat));

                string[] sourceAddress = request.Source.Split(':');
                var sourceEndPoint = new IPEndPoint(IPAddress.Parse(sourceAddress[0]), int.Parse(sourceAddress[1]));
            }
        }
示例#2
0
文件: Node.cs 项目: larsw/Ring.io
        private void HeartBeatTimer(object state)
        {
            var heartbeat = new HeartBeat();
            heartbeat.Nodes = this.Nodes;

            //var msg = new Message(); {Parts = {{heartbeat.GetType().Name.ToLowerInvariant(), }}
            //
            var message = messageBus.CreateMessage(heartbeat);
            //messageBus.AddPart<HeartBeat>(msg, heartbeat);

            // Choose a random node from the ring to gossip with.
            var nodeNumber = random.Next(0, this.Nodes.Count);
            if (this.Nodes.Count > 0)
            {
                var destinationEndpoint = IPEndPointParser.Parse(this.Nodes.ElementAt(nodeNumber).Value.Address);
                this.messageBus.Send(message, destinationEndpoint);
            }
        }
示例#3
0
文件: Node.cs 项目: kellabyte/Ring.io
        private void HeartBeatTimer(object state)
        {
            var heartbeat = new HeartBeat();
            heartbeat.Nodes = this.Nodes;

            var msg = new Message();
            messageBus.AddMessage<HeartBeat>(msg, heartbeat);

            // Choose a random node from the ring to gossip with.
            var nodeNumber = random.Next(0, this.Nodes.Count);
            if (this.Nodes.Count > 0)
            {
                var destinationEndpoint = IPEndPointParser.Parse(this.Nodes.ElementAt(nodeNumber).Value.Address);
                this.messageBus.Send(msg, destinationEndpoint);
            }
        }