void SendStatusIfNeeded(uint timestamp32) // sender thread { if (_lastTimeSentStatus == null || MiscProcedures.TimeStamp1IsLess(_lastTimeSentStatus.Value + SubtLogicConfiguration.SubtRemoteStatusPacketTransmissionIntervalTicks, timestamp32) ) { _lastTimeSentStatus = timestamp32; var remotePeerId = SubtConnectedPeer.RemotePeerId; if (remotePeerId != null) { var statusPacket = new SubtRemoteStatusPacket(_rxMeasurement.RecentBandwidth, _rxMeasurement.RecentPacketLoss, this.RecentTxBandwidth, SubtLocalPeer.LocalPeer.Configuration.RoleAsSharedPassive, SubtLocalPeer.ImHealthyAndReadyFor100kbpsU2uSymbiosis ); var data = statusPacket.Encode(this); _stream.SendPacket(data, data.Length); } } }
void SendStatusIfNeeded(uint timestamp32) // sender thread { if (_lastTimeSentStatus == null || MiscProcedures.TimeStamp1IsLess(_lastTimeSentStatus.Value + SubtLogicConfiguration.SubtRemoteStatusPacketTransmissionIntervalTicks, timestamp32) ) { _lastTimeSentStatus = timestamp32; var remotePeerId = SubtConnectedPeer.RemotePeerId; if (remotePeerId != null) { bool samePacketAlreadySent = false; if (_lastSentSubtStatusPacket != null) { if (_lastSentSubtStatusPacket.ImHealthyAndReadyFor100kbpsU2uSymbiosis == SubtLocalPeer.ImHealthyAndReadyFor100kbpsU2uSymbiosis && _lastSentSubtStatusPacket.RecentTxBandwidth == this.RecentTxBandwidth && _lastSentSubtStatusPacket.RecentRxBandwidth == _rxMeasurement.RecentBandwidth) { samePacketAlreadySent = true; } } if (!samePacketAlreadySent) { var statusPacket = new SubtRemoteStatusPacket(_rxMeasurement.RecentBandwidth, _rxMeasurement.RecentPacketLoss, this.RecentTxBandwidth, SubtLocalPeer.LocalPeer.Configuration.RoleAsSharedPassive, SubtLocalPeer.ImHealthyAndReadyFor100kbpsU2uSymbiosis ); // SubtLocalPeer.WriteToLog_deepDetail($"sending SUBT status packet: {statusPacket} to peer {SubtConnectedPeer.RemotePeerId}"); var data = statusPacket.Encode(this); _stream.SendPacket(data, data.Length); _lastSentSubtStatusPacket = statusPacket; } } } }