protected override List <Packet> ProcessJoinRequestPacket(JoinRequestPacket packet) { if (packet.MulticastGroup == SubscribedGroup) { JoinReplyPacket newPacket = new JoinReplyPacket(Address * 10000 + SequenceNumber++, SubscribedGroup, packet.Source, packet.PreviousHop, Address); return(SendPacket(newPacket)); } else { return(null); } }
protected virtual List <Packet> ProcessJoinReplyPacket(JoinReplyPacket packet) { if (packet.NextHop == Address) { RoutingTable.Find(x => x.MulticastGroup == packet.MulticastGroup).ResetExpiration(); packet.PreviousHop = Address; packet.NextHop = RoutingTable.Find(x => x.MulticastGroup == packet.MulticastGroup).NextHop; return(SendPacket(packet)); } else { return(null); } }
static JoinReplyPacket CloneJoinReplyPacket(JoinReplyPacket packet) { return(new JoinReplyPacket(packet.SequenceNumber, packet.MulticastGroup, packet.Source, packet.NextHop, packet.PreviousHop)); }
protected override List <Packet> ProcessJoinReplyPacket(JoinReplyPacket packet) { return(null); }