Exemplo n.º 1
0
        private void WriteQueuedSingle(DotaGameConnection.Packet packet)
        {
            packet.Stream.WriteBool(false);

            packet.Stream.WriteBits((uint)count, 18);
            packet.Stream.Write(data, offset, count);
        }
Exemplo n.º 2
0
 public void Write(DotaGameConnection.Packet packet)
 {
     if (State == SubchannelState.Queued)
     {
         packet.Stream.WriteBool(true);
         WriteQueued(packet);
     }
     else
     {
         packet.Stream.WriteBool(false);
     }
 }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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);
        }