public new object Clone() { PEQMessageSearch msg = new PEQMessageSearch(_DestinationID, _SenderID, _SequenceNumber, _SinkID); msg._nextHopCheat = _nextHopCheat; return msg; }
private void sendResponse(PEQTableEntrySubscription Subscription, PEQMessageSearch msg) { PEQMessageResponse newMsg = new PEQMessageResponse(msg._SenderID, _id, msg._SequenceNumber, Subscription._HopCount, msg._SinkID); newMsg._nextHopCheat = _location; PEQTimerMessage timerEvent = new PEQTimerMessage(newMsg, _eventManager.CurrentClock + _TIMER_RANDOM_WAIT_SEND * RandomValue.NextDouble(), this); _eventManager.AddEvent(timerEvent); }
private void sendSearch(VarID SinkID, int searchCount) { PEQMessageSearch msg = new PEQMessageSearch(new VarID(SinkID.SizeOf()), _id, _sequenceNumber++, SinkID); msg._nextHopCheat = _location; PEQTimerMessage timerEvent = new PEQTimerMessage(msg, _eventManager.CurrentClock + _TIMER_RANDOM_WAIT_SEND * _randomValue.NextDouble(), this); _eventManager.AddEvent(timerEvent); PEQTimerSearch searchTimer = new PEQTimerSearch(_eventManager.CurrentClock + _physicalProcessor.MaximumRange * _TIMER_SEARCH / _physicalProcessor.PropagationSpeed, this); searchTimer._SinkID = SinkID; searchTimer._Count = ++searchCount; _eventManager.AddEvent(searchTimer); }
private void processSearch(PEQMessageSearch msg) { PEQTableEntrySubscription subscriptionEntry = null; foreach (PEQTableEntrySubscription entry in _tableSubscription) { if ((entry._SinkID == msg._SinkID) && entry._Valid) { if (subscriptionEntry == null) subscriptionEntry = entry; else if (subscriptionEntry._HopCount > entry._HopCount) subscriptionEntry = entry; } } if (subscriptionEntry == null) { subscriptionEntry = new PEQTableEntrySubscription(); subscriptionEntry._HopCount = 0xff; subscriptionEntry._Valid = false; subscriptionEntry._nextHopCheat = null; subscriptionEntry._CriteriaType = 0x0000; } sendResponse(subscriptionEntry, msg); }