コード例 #1
0
 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);
         }
     }
 }
コード例 #2
0
        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;
                    }
                }
            }
        }