private void UpdateSender() { if (sender != null) { sender.Update(); //actively sending? if (mIsActive) { bool wasFull = mBufferFull; //reset buffer full flag. set to true again if send fails mBufferFull = false; //timer used to balance out the messages to avoid sending in bulk mTargetPackagesCounter += Time.unscaledDeltaTime; float secPerPacket = 1.0f / PacketsPerSecond; while (mTargetPackagesCounter > secPerPacket) { mBuffered = sender.GetBufferedAmount(mToEcho, SEND_RELIABLE); bool successful = false; if ((mBuffered + buffer.Length) < MAX_BUFFER) { //false here means WebRTC refused to send either internal //buffer is full (MAX_BUFFER bigger than supported allowed buffer) //or it might have just disconnected and failed to send successful = SendOneMessage(); if (successful == false) { Debug.LogWarning("Send returned false. Either internal WebRTC buffer is full or disconnect / internal error"); } } if (successful) { mNumberSent++; mSumBytesSent += buffer.Length; mTargetPackagesCounter -= secPerPacket; } else { mBufferFull = true; mBufferFullCount++; if (BenchmarkConfig.VERBOSE && wasFull == false) { Debug.LogWarning("sender: Buffer full. Pause sending"); } mTargetPackagesCounter = 0; break; } } } } }
private void Update() { mAverageTimer += Time.unscaledDeltaTime; if (mAverageTimer > 4) { //watch out we round down a few bytes here mStatAvgReceived = (int)(mSumBytesRec / mAverageTimer); mSumBytesRec = 0; mAverageTimer = 0; } if (echo != null) { echo.Update(); if (mToSender != ConnectionId.INVALID && mActive) { mBuffered = echo.GetBufferedAmount(mToSender, true); } } }