Exemplo n.º 1
0
 protected override void WriteData(Stream buffer)
 {
     buffer.WriteShortByteArray(QueryId);
     buffer.WriteShort((short)Parameters.Count);
     foreach (var prm in Parameters)
         buffer.WriteByteArray(prm);
     buffer.WriteShort((short)CqlConsistency);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Writes the data to buffer.
        /// </summary>
        /// <param name="buffer"> The buffer. </param>
        protected override void WriteData(Stream buffer)
        {
            if(ProtocolVersion == 1)
            {
                throw new ProtocolException(ProtocolVersion, ErrorCode.Protocol, "Batch frames are supported from Cassandra Version 2.0.0 and up.");
            }

            buffer.WriteByte((byte)Type);
            buffer.WriteShort((ushort)Commands.Count);
            foreach(var command in Commands)
            {
                if(command.IsPrepared)
                {
                    buffer.WriteByte(1);
                    buffer.WriteShortByteArray(command.QueryId);
                }
                else
                {
                    buffer.WriteByte(0);
                    buffer.WriteLongString(command.CqlQuery);
                }

                if(command.ParameterValues != null)
                {
                    byte[][] paramValues = command.ParameterValues.Serialize(ProtocolVersion);
                    var length = (ushort)paramValues.Length;
                    buffer.WriteShort(length);
                    for(var i = 0; i < length; i++)
                    {
                        buffer.WriteByteArray(paramValues[i]);
                    }
                }
                else
                    buffer.WriteShort(0);
            }

            buffer.WriteConsistency(CqlConsistency);

            if(ProtocolVersion >= 3)
            {
                var flags = (byte)((SerialConsistency.HasValue ? 16 : 0) |
                                   (Timestamp.HasValue ? 32 : 0));

                buffer.WriteByte(flags);

                if(SerialConsistency.HasValue)
                    buffer.WriteShort((ushort)SerialConsistency.Value);

                if(Timestamp.HasValue)
                    buffer.WriteLong(Timestamp.Value.ToTimestamp());
            }
        }
Exemplo n.º 3
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteShort (SlotID);
 }
Exemplo n.º 4
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteInt (EntityID);
     aStream.WriteShort(VelX);
     aStream.WriteShort (VelY);
     aStream.WriteShort (VelZ);
 }
Exemplo n.º 5
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteInt (EntityID);
     aStream.WriteShort (Slot);
     aStream.WriteShort (ItemID);
     aStream.WriteShort (Damage);
 }
Exemplo n.º 6
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteShort (Health);
 }
Exemplo n.º 7
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteInt (X);
     aStream.WriteByte (Y);
     aStream.WriteInt (Z);
     aStream.WriteByte ((byte)Direction);
     aStream.WriteShort (ItemID);
     if (ItemID >= 0) {
         aStream.WriteByte (Amount);
         aStream.WriteShort (Damage);
     }
 }
Exemplo n.º 8
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteInt (EntityID);
     aStream.WriteShort (ItemID);
     aStream.WriteByte (Count);
     aStream.WriteShort (DamageData);
     aStream.WriteInt (X);
     aStream.WriteInt (Y);
     aStream.WriteInt (Z);
     aStream.WriteByte (Rotation);
     aStream.WriteByte (Pitch);
     aStream.WriteByte (Roll);
 }
Exemplo n.º 9
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream (aStream);
     aStream.WriteInt (EntityID);
     aStream.WriteString16 (PlayerName);
     aStream.WriteInt (X);
     aStream.WriteInt (Y);
     aStream.WriteInt (Z);
     aStream.WriteByte (Rotation);
     aStream.WriteByte (Pitch);
     aStream.WriteShort (CurrentItem);
 }
Exemplo n.º 10
0
 protected void WriteMessageIdentifier(Stream stream) {
     stream.WriteShort(MessageIdentifier);
 }
Exemplo n.º 11
0
 protected void WriteKeepAlive(Stream stream) {
     stream.WriteShort(KeepAlive);
 }
Exemplo n.º 12
0
 protected override void WriteData(Stream buffer)
 {
     buffer.WriteLongString(Cql);
     buffer.WriteShort((short) CqlConsistency);
 }
Exemplo n.º 13
0
        /// <summary>
        /// Writes the query parameters.
        /// </summary>
        /// <param name="buffer">The buffer.</param>
        protected void WriteQueryParameters(Stream buffer)
        {
            buffer.WriteConsistency(CqlConsistency);

            var flags = (byte)((Parameters != null ? 1 : 0) |
                               (SkipMetaData ? 2 : 0) |
                               (PageSize.HasValue ? 4 : 0) |
                               (PagingState != null ? 8 : 0) |
                               (SerialConsistency.HasValue ? 16 : 0) |
                               (ProtocolVersion >= 3 && Timestamp.HasValue ? 32 : 0));

            buffer.WriteByte(flags);

            if(Parameters != null)
            {
                buffer.WriteShort((ushort)Parameters.Count);
                foreach(var value in Parameters)
                    buffer.WriteByteArray(value);
            }

            if(PageSize.HasValue)
                buffer.WriteInt(PageSize.Value);

            if(PagingState != null)
                buffer.WriteByteArray(PagingState);

            if(SerialConsistency.HasValue)
                buffer.WriteShort((ushort)SerialConsistency.Value);

            if(ProtocolVersion >= 3 && Timestamp.HasValue)
                buffer.WriteLong(Timestamp.Value.ToTimestamp()*1000); //convert milliseconds to microseconds
        }
Exemplo n.º 14
0
 public override void WriteToStream(Stream aStream)
 {
     base.WriteToStream(aStream);
     aStream.WriteShort(Health);
 }
Exemplo n.º 15
0
        public static void Write(object value, Stream stream, FormatItem format, Encoding enc)
        {
            switch (format.DataType)
            {
            case TdsDataType.TDS_BIT:
                switch (value)
                {
                case bool b:
                    stream.WriteBool(b);
                    break;

                default:
                    stream.WriteByte(0);
                    break;
                }
                break;

            case TdsDataType.TDS_INT1:
                stream.WriteByte(Cast <byte>(value, format));
                break;

            //no TDS_SINT1, we will transmit as an INTN(2)
            case TdsDataType.TDS_INT2:
                stream.WriteShort(Cast <short>(value, format));
                break;

            case TdsDataType.TDS_UINT2:
                stream.WriteUShort(Cast <ushort>(value, format));
                break;

            case TdsDataType.TDS_INT4:
                stream.WriteInt(Cast <int>(value, format));
                break;

            case TdsDataType.TDS_UINT4:
                stream.WriteUInt(Cast <uint>(value, format));
                break;

            case TdsDataType.TDS_INT8:
                stream.WriteLong(Cast <long>(value, format));
                break;

            case TdsDataType.TDS_UINT8:
                stream.WriteULong(Cast <ulong>(value, format));
                break;

            case TdsDataType.TDS_INTN:
                switch (value)
                {
                case byte b:
                    stream.WriteByte(1);
                    stream.WriteByte(b);
                    break;

                case sbyte sb:
                    stream.WriteByte(2);
                    stream.WriteShort(sb);
                    break;

                case short s:
                    stream.WriteByte(2);
                    stream.WriteShort(s);
                    break;

                case int i:
                    stream.WriteByte(4);
                    stream.WriteInt(i);
                    break;

                case long l:
                    stream.WriteByte(8);
                    stream.WriteLong(l);
                    break;

                //case null:
                default:
                    stream.WriteByte(0);
                    break;
                }
                break;

            case TdsDataType.TDS_UINTN:
                switch (value)
                {
                case byte b:
                    stream.WriteByte(1);
                    stream.WriteByte(b);
                    break;

                case ushort s:
                    stream.WriteByte(2);
                    stream.WriteUShort(s);
                    break;

                case uint i:
                    stream.WriteByte(4);
                    stream.WriteUInt(i);
                    break;

                case ulong l:
                    stream.WriteByte(8);
                    stream.WriteULong(l);
                    break;

                //case null:
                default:
                    stream.WriteByte(0);
                    break;
                }
                break;

            case TdsDataType.TDS_FLT4:
                stream.WriteFloat(Cast <float>(value, format));
                break;

            case TdsDataType.TDS_FLT8:
                stream.WriteDouble(Cast <double>(value, format));
                break;

            case TdsDataType.TDS_FLTN:
                switch (value)
                {
                case float f:
                    stream.WriteByte(4);
                    stream.WriteFloat(f);
                    break;

                case double d:
                    stream.WriteByte(8);
                    stream.WriteDouble(d);
                    break;

                default:
                    stream.WriteByte(0);
                    break;
                }
                break;

            case TdsDataType.TDS_VARCHAR:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteBytePrefixedString(Cast <string>(value, format), enc);
                }
                break;

            case TdsDataType.TDS_LONGCHAR:
                if (!stream.TryWriteIntPrefixedNull(value))
                {
                    stream.WriteIntPrefixedString(Cast <string>(value, format), enc);
                }
                break;

            case TdsDataType.TDS_VARBINARY:
            case TdsDataType.TDS_BINARY:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteBytePrefixedByteArray(Cast <byte[]>(value, format));
                }
                break;

            case TdsDataType.TDS_LONGBINARY:
                if (!stream.TryWriteIntPrefixedNull(value))
                {
                    switch (value)
                    {
                    case string s:
                        stream.WriteIntPrefixedByteArray(Encoding.Unicode.GetBytes(s));
                        break;

                    case char c:
                        stream.WriteIntPrefixedByteArray(Encoding.Unicode.GetBytes(new[] { c }));
                        break;

                    case byte[] ba:
                        stream.WriteIntPrefixedByteArray(ba);
                        break;

                    case byte b:
                        stream.WriteIntPrefixedByteArray(new[] { b });
                        break;

                    default:
                        stream.WriteInt(0);
                        break;
                    }
                }
                break;

            case TdsDataType.TDS_DECN:
            case TdsDataType.TDS_NUMN:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    switch (value)
                    {
                    case AseDecimal ad:
                        stream.WriteDecimal(ad);
                        break;

                    default:
                        stream.WriteDecimal((SqlDecimal)Cast <decimal>(value, format));
                        break;
                    }
                }
                break;

            case TdsDataType.TDS_DATETIME:
                stream.WriteIntPartDateTime(Cast <DateTime>(value, format));
                break;

            case TdsDataType.TDS_DATETIMEN:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteIntPartDateTime(Cast <DateTime>(value, format));
                }
                break;

            case TdsDataType.TDS_DATE:
                stream.WriteDate(Cast <DateTime>(value, format));
                break;

            case TdsDataType.TDS_DATEN:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteDate(Cast <DateTime>(value, format));
                }
                break;

            case TdsDataType.TDS_TIME:
                stream.WriteTime(Cast <TimeSpan>(value, format));
                break;

            case TdsDataType.TDS_TIMEN:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteTime(Cast <TimeSpan>(value, format));
                }
                break;

            case TdsDataType.TDS_MONEYN:
                if (!stream.TryWriteBytePrefixedNull(value))
                {
                    stream.WriteMoney(Cast <decimal>(value, format));
                }
                break;

            default:
                Debug.Assert(false, $"Unsupported data type {format.DataType}");
                break;
            }
        }
Exemplo n.º 16
0
 public void WriteToCDO(Stream stream)
 {
     stream.WriteShort(X);
     stream.WriteShort(Z);
 }