MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / Stream

Method Stream

libi2pd/Streaming.cpp:85–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83 }
84
85 Stream::Stream (boost::asio::io_context& service, StreamingDestination& local,
86 std::shared_ptr<const i2p::data::LeaseSet> remote, int port): m_Service (service),
87 m_SendStreamID (0), m_SequenceNumber (0), m_DropWindowDelaySequenceNumber (INITIAL_WINDOW_SIZE),
88 m_TunnelsChangeSequenceNumber (0), m_LastReceivedSequenceNumber (-1), m_PreviousReceivedSequenceNumber (-1),
89 m_LastConfirmedReceivedSequenceNumber (0), // for limit inbound speed
90 m_Status (eStreamStatusNew), m_IsIncoming (false), m_IsAckSendScheduled (false), m_IsNAcked (false), m_IsFirstACK (false),
91 m_IsResendNeeded (false), m_IsFirstRttSample (false), m_IsSendTime (true),
92 m_IsWinDropped (true), m_IsChoking2 (false), m_IsChoking3 (false), m_IsClientChoked (false), m_IsClientChoked2 (false),
93 m_IsTimeOutResend (false), m_IsImmediateAckRequested (false), m_IsRemoteLeaseChangeInProgress (false),
94 m_IsBufferEmpty (false), m_IsJavaClient (false), m_DontSign (local.GetOwner ()->IsStreamingDontSign ()),
95 m_LocalDestination (local), m_RemoteLeaseSet (remote), m_ReceiveTimer (m_Service),
96 m_SendTimer (m_Service), m_ResendTimer (m_Service), m_AckSendTimer (m_Service), m_NumSentBytes (0),
97 m_NumReceivedBytes (0), m_Port (port), m_RTT (INITIAL_RTT), m_MinRTT (INITIAL_RTT),
98 m_SlowRTT (INITIAL_RTT), m_FastRTT (INITIAL_RTT), m_WindowSize (INITIAL_WINDOW_SIZE),
99 m_MaxWindowSize (local.GetOwner ()->GetStreamingMaxWindowSize ()), m_LastWindowDropSize (0),
100 m_WindowDropTargetSize (0), m_WindowIncCounter (0), m_RTO (INITIAL_RTO),
101 m_AckDelay (local.GetOwner ()->GetStreamingAckDelay ()), m_PrevRTTSample (INITIAL_RTT),
102 m_Jitter (0), m_MinPacingTime (0), m_PacingTime (INITIAL_PACING_TIME), m_PacingTimeRem (0),
103 m_LastSendTime (0), m_LastACKRecieveTime (0), m_ACKRecieveInterval (local.GetOwner ()->GetStreamingAckDelay ()),
104 m_RemoteLeaseChangeTime (0), m_LastWindowIncTime (0), m_LastACKRequestTime (0), m_LastACKSendTime (0),
105 m_PacketACKInterval (1), m_PacketACKIntervalRem (0), // for limit inbound speed
106 m_MaxNumResendAttempts (local.GetOwner ()->GetStreamingMaxResends ()),
107 m_NumResendAttempts (0), m_NumPacketsToSend (0), m_JitterAccum (0), m_JitterDiv (1), m_MTU (STREAMING_MTU)
108 {
109 RAND_bytes ((uint8_t *)&m_RecvStreamID, 4);
110 m_RemoteIdentity = remote->GetIdentity ();
111 auto outboundSpeed = local.GetOwner ()->GetStreamingOutboundSpeed ();
112 if (outboundSpeed)
113 m_MinPacingTime = (1000000LL*STREAMING_MTU)/outboundSpeed;
114
115 auto inboundSpeed = local.GetOwner ()->GetStreamingInboundSpeed (); // for limit inbound speed
116 if (inboundSpeed)
117 m_PacketACKInterval = (1000000LL*STREAMING_MTU)/inboundSpeed;
118 }
119
120 Stream::Stream (boost::asio::io_context& service, StreamingDestination& local):
121 m_Service (service), m_SendStreamID (0), m_SequenceNumber (0), m_DropWindowDelaySequenceNumber (INITIAL_WINDOW_SIZE),

Callers

nothing calls this directly

Calls 8

IsStreamingDontSignMethod · 0.80
GetStreamingAckDelayMethod · 0.80
GetOwnerMethod · 0.45
GetIdentityMethod · 0.45

Tested by

no test coverage detected