//TODO: Move to ExecuteRequest and QueryRequest internal void Write(BEBinaryWriter wb, byte protocolVersion, bool isPrepared) { //protocol v1: <query><n><value_1>....<value_n><consistency> //protocol v2: <query><consistency><flags>[<n><value_1>...<value_n>][<result_page_size>][<paging_state>][<serial_consistency>] //protocol v3: <query><consistency><flags>[<n>[name_1]<value_1>...[name_n]<value_n>][<result_page_size>][<paging_state>][<serial_consistency>][<timestamp>] var flags = GetFlags(); if (protocolVersion > 1) { wb.WriteUInt16((ushort)Consistency); wb.WriteByte((byte)flags); } if (flags.HasFlag(QueryFlags.Values)) { wb.WriteUInt16((ushort)Values.Length); for (var i = 0; i < Values.Length; i++) { if (flags.HasFlag(QueryFlags.WithNameForValues)) { var name = ValueNames[i]; wb.WriteString(name); } var v = Values[i]; var bytes = TypeCodec.Encode(protocolVersion, v); wb.WriteBytes(bytes); } } else if (protocolVersion == 1 && isPrepared) { //n values is not optional on protocol v1 //Write 0 values wb.WriteUInt16(0); } if (protocolVersion == 1) { //Protocol v1 ends here wb.WriteUInt16((ushort)Consistency); return; } if ((flags & QueryFlags.PageSize) == QueryFlags.PageSize) { wb.WriteInt32(PageSize); } if ((flags & QueryFlags.WithPagingState) == QueryFlags.WithPagingState) { wb.WriteBytes(PagingState); } if ((flags & QueryFlags.WithSerialConsistency) == QueryFlags.WithSerialConsistency) { wb.WriteUInt16((ushort)SerialConsistency); } if (Timestamp != null) { //Expressed in microseconds wb.WriteLong(TypeCodec.ToUnixTime(Timestamp.Value).Ticks / 10); } }
internal void Write(BEBinaryWriter wb, ConsistencyLevel?extConsistency, byte protocolVersion) { //protocol v1: <id><n><value_1>....<value_n><consistency> //protocol v2: <id><consistency><flags>[<n><value_1>...<value_n>][<result_page_size>][<paging_state>][<serial_consistency>] if ((ushort)(extConsistency ?? Consistency) >= (ushort)ConsistencyLevel.Serial) { throw new InvalidQueryException("Serial consistency specified as a non-serial one."); } if (protocolVersion > 1) { wb.WriteUInt16((ushort)(extConsistency ?? Consistency)); wb.WriteByte((byte)Flags); } if ((Flags & QueryFlags.Values) == QueryFlags.Values) { wb.WriteUInt16((ushort)Values.Length); for (int i = 0; i < Values.Length; i++) { var bytes = TypeInterpreter.InvCqlConvert(Values[i]); wb.WriteBytes(bytes); } } if (protocolVersion == 1) { wb.WriteUInt16((ushort)(extConsistency ?? Consistency)); } else { if ((Flags & QueryFlags.PageSize) == QueryFlags.PageSize) { wb.WriteInt32(PageSize); } if ((Flags & QueryFlags.WithPagingState) == QueryFlags.WithPagingState) { wb.WriteBytes(PagingState); } if ((Flags & QueryFlags.WithSerialConsistency) == QueryFlags.WithSerialConsistency) { if ((ushort)(SerialConsistency) < (ushort)ConsistencyLevel.Serial) { throw new InvalidQueryException("Non-serial consistency specified as a serial one."); } wb.WriteUInt16((ushort)SerialConsistency); } } }
public RequestFrame GetFrame() { var wb = new BEBinaryWriter(); wb.WriteFrameHeader(0x01, 0x00, (byte)_streamId, OpCode); wb.WriteBytes(_token); return(wb.GetFrame()); }
public void WriteToBatch(byte protocolVersion, BEBinaryWriter wb) { wb.WriteByte(1); //prepared query wb.WriteShortBytes(_id); wb.WriteUInt16((ushort)_queryOptions.Values.Length); for (int i = 0; i < _metadata.Columns.Length; i++) { byte[] bytes = TypeCodec.Encode(protocolVersion, _queryOptions.Values[i]); wb.WriteBytes(bytes); } }
public void WriteToBatch(BEBinaryWriter wb) { wb.WriteByte(1); //prepared query wb.WriteShortBytes(_id); wb.WriteUInt16((ushort)_queryProtocolOptions.Values.Length); for (int i = 0; i < _metadata.Columns.Length; i++) { byte[] bytes = TypeInterpreter.InvCqlConvert(_queryProtocolOptions.Values[i]); wb.WriteBytes(bytes); } }
public void WriteToBatch(byte protocolVersion, BEBinaryWriter wb) { //not a prepared query wb.WriteByte(0); wb.WriteLongString(_cqlQuery); if (_queryOptions.Values == null || _queryOptions.Values.Length == 0) { //not values wb.WriteInt16(0); } else { wb.WriteUInt16((ushort)_queryOptions.Values.Length); for (var i = 0; i < _queryOptions.Values.Length; i++) { var bytes = TypeCodec.Encode(protocolVersion, _queryOptions.Values[i]); wb.WriteBytes(bytes); } } }
public void WriteToBatch(byte protocolVersion, BEBinaryWriter wb) { //not a prepared query wb.WriteByte(0); wb.WriteLongString(_cqlQuery); if (_queryOptions.Values == null || _queryOptions.Values.Length == 0) { //not values wb.WriteInt16(0); } else { wb.WriteUInt16((ushort) _queryOptions.Values.Length); for (var i = 0; i < _queryOptions.Values.Length; i++) { var bytes = TypeCodec.Encode(protocolVersion, _queryOptions.Values[i]); wb.WriteBytes(bytes); } } }
public void WriteToBatch(byte protocolVersion, BEBinaryWriter wb) { wb.WriteByte(1); //prepared query wb.WriteShortBytes(_id); wb.WriteUInt16((ushort) _queryOptions.Values.Length); for (int i = 0; i < _metadata.Columns.Length; i++) { byte[] bytes = TypeCodec.Encode(protocolVersion, _queryOptions.Values[i]); wb.WriteBytes(bytes); } }