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])); } }
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); } }
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); } }