public static byte[] InvConvertFromSet(IColumnInfo type_info, object value) { var listType = GetTypeFromSet(type_info); CheckArgument(listType, value); var list_typecode = (type_info as SetColumnInfo).KeyTypeCode; var list_typeinfo = (type_info as SetColumnInfo).KeyTypeInfo; List <byte[]> bufs = new List <byte[]>(); int cnt = 0; int bsize = 2; foreach (var obj in (value as IEnumerable)) { var buf = TypeInterpreter.InvCqlConvert(obj, list_typecode, list_typeinfo); bufs.Add(buf); bsize += buf.Length; cnt++; } var ret = new byte[bsize]; var cntbuf = Int16ToBytes((short)cnt); int idx = 0; Buffer.BlockCopy(cntbuf, 0, ret, 0, 2); idx += 2; foreach (var buf in bufs) { Buffer.BlockCopy(buf, 0, ret, idx, buf.Length); idx += buf.Length; } return(ret); }
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 static byte[] InvConvertFromMap(IColumnInfo type_info, object value) { var dicType = GetTypeFromList(type_info); CheckArgument(dicType, value); var key_typecode = (type_info as MapColumnInfo).KeyTypeCode; var key_typeinfo = (type_info as MapColumnInfo).KeyTypeInfo; var value_typecode = (type_info as MapColumnInfo).ValueTypeCode; var value_typeinfo = (type_info as MapColumnInfo).ValueTypeInfo; var key_type = TypeInterpreter.GetTypeFromCqlType(key_typecode, key_typeinfo); var value_type = TypeInterpreter.GetTypeFromCqlType(value_typecode, value_typeinfo); List <byte[]> bufs = new List <byte[]>(); int cnt = 0; int bsize = 2; var kvoType = typeof(KeyValuePair <,>); var kvType = kvoType.MakeGenericType(key_type, value_type); var key_prop = kvType.GetProperty("Key"); var value_prop = kvType.GetProperty("Value"); foreach (var kv in (value as IEnumerable)) { { var obj = key_prop.GetValue(kv, new object[] { }); var buf = TypeInterpreter.InvCqlConvert(obj, key_typecode, key_typeinfo); bufs.Add(buf); bsize += buf.Length; } { var obj = value_prop.GetValue(kv, new object[] { }); var buf = TypeInterpreter.InvCqlConvert(obj, value_typecode, value_typeinfo); bufs.Add(buf); bsize += buf.Length; } cnt++; } var ret = new byte[bsize]; var cntbuf = Int16ToBytes((short)cnt); // short or ushort ? int idx = 0; Buffer.BlockCopy(cntbuf, 0, ret, 0, 2); idx += 2; foreach (var buf in bufs) { Buffer.BlockCopy(buf, 0, ret, idx, buf.Length); idx += buf.Length; } return(ret); }
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); } } }
internal byte[] ConvertFromObject(int i, object o) { return(TypeInterpreter.InvCqlConvert(o, _rawColumns[i].TypeCode, _rawColumns[i].TypeInfo)); }
public static byte[] InvConvertFromMap(IColumnInfo type_info, object value) { var dicType = GetDefaultTypeFromMap(type_info); CheckArgument(dicType, value); var key_typecode = (type_info as MapColumnInfo).KeyTypeCode; var key_typeinfo = (type_info as MapColumnInfo).KeyTypeInfo; var value_typecode = (type_info as MapColumnInfo).ValueTypeCode; var value_typeinfo = (type_info as MapColumnInfo).ValueTypeInfo; var key_type = TypeInterpreter.GetDefaultTypeFromCqlType(key_typecode, key_typeinfo); var value_type = TypeInterpreter.GetDefaultTypeFromCqlType(value_typecode, value_typeinfo); List <byte[]> kbufs = new List <byte[]>(); List <byte[]> vbufs = new List <byte[]>(); int cnt = 0; int bsize = 2; var key_prop = dicType.GetProperty("Keys"); var value_prop = dicType.GetProperty("Values"); foreach (var obj in key_prop.GetValue(value, new object[] { }) as IEnumerable) { var buf = TypeInterpreter.InvCqlConvert(obj, key_typecode, key_typeinfo); kbufs.Add(buf); bsize += 2; //size of key bsize += buf.Length; cnt++; } foreach (var obj in value_prop.GetValue(value, new object[] { }) as IEnumerable) { var buf = TypeInterpreter.InvCqlConvert(obj, value_typecode, value_typeinfo); vbufs.Add(buf); bsize += 2; //size of value bsize += buf.Length; } var ret = new byte[bsize]; var cntbuf = Int16ToBytes((short)cnt); // short or ushort ? int idx = 0; Buffer.BlockCopy(cntbuf, 0, ret, 0, 2); idx += 2; for (int i = 0; i < cnt; i++) { { var buf = kbufs[i]; var keyval_buf_size = Int16ToBytes((short)buf.Length); Buffer.BlockCopy(keyval_buf_size, 0, ret, idx, 2); idx += 2; Buffer.BlockCopy(buf, 0, ret, idx, buf.Length); idx += buf.Length; } { var buf = vbufs[i]; var keyval_buf_size = Int16ToBytes((short)buf.Length); Buffer.BlockCopy(keyval_buf_size, 0, ret, idx, 2); idx += 2; Buffer.BlockCopy(buf, 0, ret, idx, buf.Length); idx += buf.Length; } } return(ret); }