public void WriteStream(NetStream stream) { if (stream == null) { EnsureFitsBits(5); Write(0, 4, 14, 22); return; } uint num = (uint)stream.UseBuffedSize(); if (num < 16) { EnsureFitsBits((int)(5 + num * 8)); Write(num, 4, 14, 22); for (int i = 0; i < num; i++) { Write(stream.buffer[i]); } } else { Write(num, 4, 14, 22); EnsureFitsBytes(stream.UseBuffedSize(), pad: true); PadToByte(); Array.Copy(stream.GetOriginalBuffer(), 0L, buffer, currentByte, num); currentByte += (int)num; } }
public void FlushBuffer(NetTransport transport, bool skipLock = false) { lock (unreliableStreamLock) { if (unreliableStream.position != 0) { unreliableStream.WriteStream(null); transport.SendUnreliable(this, unreliableStream.GetOriginalBuffer(), unreliableStream.UseBuffedSize()); NetGame.instance.sendBps.ReportBits(unreliableStream.position); unreliableStream.Seek(0); } } }