private void WriteQueuedSingle(DotaGameConnection.Packet packet) { packet.Stream.WriteBool(false); packet.Stream.WriteBits((uint)count, 18); packet.Stream.Write(data, offset, count); }
public void Write(DotaGameConnection.Packet packet) { if (State == SubchannelState.Queued) { packet.Stream.WriteBool(true); WriteQueued(packet); } else { packet.Stream.WriteBool(false); } }
private void WriteQueued(DotaGameConnection.Packet packet) { if (offset != 0 || count != data.Length) { packet.Stream.WriteBool(true); WriteQueuedChunk(packet); } else { packet.Stream.WriteBool(false); WriteQueuedSingle(packet); } SentIn = packet.Seq; State = SubchannelState.Blocked; }
private void WriteQueuedChunk(DotaGameConnection.Packet packet) { var chunkOffset = (offset + DotaGameConnection.BYTES_PER_CHUNK - 1) / DotaGameConnection.BYTES_PER_CHUNK; var chunkCount = (count + DotaGameConnection.BYTES_PER_CHUNK - 1) / DotaGameConnection.BYTES_PER_CHUNK; packet.Stream.WriteBits((uint)chunkOffset, 18); packet.Stream.WriteBits((uint)chunkCount, 3); if (offset == 0) { packet.Stream.WriteBool(false); packet.Stream.WriteBool(false); packet.Stream.WriteBits((uint)data.Length, 26); } packet.Stream.Write(data, offset, count); }