public PEQMessageSubscribe(PEQMessage BaseMessage, VarID SinkID, Byte HopCount, PEQSubscriptionInfo SubscriptionInfo) : base(BaseMessage._DestinationID, BaseMessage._SenderID, BaseMessage._SequenceNumber) { _MessageType = 0x01; _SinkID = SinkID; _HopCount = HopCount; _SubscriptionInfo = SubscriptionInfo; }
public PEQMessageResponse(PEQMessage BaseMessage, Byte HopCount, VarID SinkID) : base(BaseMessage._DestinationID, BaseMessage._SenderID, BaseMessage._SequenceNumber) { _MessageType = 0x05; _HopCount = HopCount; _SinkID = SinkID; }
public PEQMessageSearch(PEQMessage BaseMessage, VarID SinkID) : base(BaseMessage._DestinationID, BaseMessage._SenderID, BaseMessage._SequenceNumber) { _MessageType = 0x04; _SinkID = SinkID; }
public PEQMessageBuildTree(PEQMessage BaseMessage, VarID SinkID, Byte HopCount) : base(BaseMessage._DestinationID, BaseMessage._SenderID, BaseMessage._SequenceNumber) { _MessageType = 0x00; _SinkID = SinkID; _HopCount = HopCount; }
public PEQMessageNotify(PEQMessage BaseMessage, VarID SinkID, PEQData Data) : base(BaseMessage._DestinationID, BaseMessage._SenderID, BaseMessage._SequenceNumber) { _MessageType = 0x02; _SinkID = SinkID; _Data = Data; }
private void processHello(PEQMessage msg) { VarID neighborID = msg._SenderID; if (!_tableNeighbor.Contains(neighborID)) _tableNeighbor.Add(neighborID); }
/***********************************************\ |******************* WARNING *******************| |***********************************************| |* See warning in PEQMessageHello!! | \***********************************************/ public object Clone() { PEQMessage outmsg = new PEQMessage(_DestinationID, _SenderID, _SequenceNumber, _MessageType); outmsg._nextHopCheat = _nextHopCheat; return outmsg; }
IInfoReport GeneratePEQNodeInfoReport(bool isSending, PEQMessage msg) { if (msg is PEQMessageAck) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.ACK); if (msg is PEQMessageApplication) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Application); if (msg is PEQMessageBuildTree) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.BuildTree); if (msg is PEQMessageHello) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Hello); if (msg is PEQMessageNotify) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Notify); if (msg is PEQMessageResponse) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Response); if (msg is PEQMessageSearch) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Search); if (msg is PEQMessageSubscribe) return GeneratePEQNodeInfoReport(isSending, PEQMessageType.Subscribe); else return null; }
private void expectAck(PEQMessage msg) { // Add the ACK info to the ACK Table and create a timer event to kill // the neighbor entry upon ACK failure. PEQTableEntryMessageAck ackEntry = new PEQTableEntryMessageAck(msg._SequenceNumber, msg._DestinationID, msg); _tableAck.Add(ackEntry); PEQTimerAck ackTimer = new PEQTimerAck(_eventManager.CurrentClock + _physicalProcessor.MaximumRange * _TIMER_ACK / _physicalProcessor.PropagationSpeed, this, ackEntry); _eventManager.AddEvent(ackTimer); }
private void startSearch(VarID SinkID, PEQMessage dataMessage) { clearTableSearch(SinkID); // Set all neighbors to 0xFF hops (unreachable) foreach (VarID neighborID in _tableNeighbor) { PEQTableEntrySearch entry = new PEQTableEntrySearch(); entry._SinkID = SinkID; entry._HopCount = 0xFF; entry._DestinationID = neighborID; entry._DataMessage = dataMessage; _tableSearch.Add(entry); } sendSearch(SinkID); _searchAggregator.IncrementSearches(); updateRoutingTable(); }
private void sendAck(PEQMessage msg) { if (msg._DestinationID == msg._SenderID) return; PEQMessageAck ackMessage = new PEQMessageAck(msg._SenderID, msg._DestinationID, msg._SequenceNumber); ackMessage._nextHopCheat = _location; // Just add this to all msgs PEQTimerMessage timerEvent = new PEQTimerMessage(ackMessage, _eventManager.CurrentClock + _TIMER_WAIT_SEND, this); _eventManager.AddEvent(timerEvent); }
public PEQTableEntryMessageAck(Byte SequenceNumber, VarID DestinationID, PEQMessage dataMessage) { _SequenceNumber = SequenceNumber; _DestinationID = DestinationID; _DataMessage = dataMessage; }