public static MessageDescriptor <Map> CreateDescriptor() { return(MessageDescriptorBuilder.New <Map>() .Int32(1, x => x.Key, (x, y) => x.Key = y) .String(2, x => x.Value, (x, y) => x.Value = y, x => x.Value != null) .CreateDescriptor()); }
public static MessageDescriptor <ColumnInfo> GetDescriptor() { return(MessageDescriptorBuilder.New <ColumnInfo>() .String(1, ci => ci.Name, (ci, name) => ci.Name = name) .String(2, ci => ci.TypeName, (ci, type) => ci.TypeName = type) .CreateDescriptor()); }
public static MessageDescriptor <SomeSettingsContainer> CreateDescriptor() { return(MessageDescriptorBuilder.New <SomeSettingsContainer>() .String(1, x => x.Name, (x, y) => x.Name = y) .MessageArray(2, x => x.SomeSettings.Select(y => new Map(y.Key, y.Value)), (x, y) => x.SomeSettings.Add(y.Key, y.Value), Map.CreateDescriptor()) .CreateDescriptor()); }
public static MessageDescriptor <Room> CreateDescriptor() { return(MessageDescriptorBuilder.New <Room>() .Int32(1, x => x.Capacity, (x, y) => x.Capacity = y) .String(2, x => x.Name, (x, y) => x.Name = y) .MessageArray(3, x => x.People, (x, y) => x.People.Add(y), Person.CreateDescriptor()) .CreateDescriptor()); }
public static MessageDescriptor <FieldParams> GetDescriptor() { return(MessageDescriptorBuilder.New <FieldParams>() .Int32(1, fp => fp.Number, (fp, numb) => fp.Number = numb) .String(2, fp => fp.Name, (fp, name) => fp.Name = name) .String(3, fp => fp.Type, (fp, type) => fp.Type = type) .CreateDescriptor()); }
public static MessageDescriptor <ColumnInfoPair> GetDescriptor() { return(MessageDescriptorBuilder.New <ColumnInfoPair>() .Int32(1, cip => cip.Tag, (cip, tag) => cip.Tag = tag) .Message(2, cip => cip.ColumnInfo, (cip, info) => cip.ColumnInfo = info, ColumnInfo.GetDescriptor()) .CreateDescriptor()); }
public static MessageDescriptor <DescriptorInfo> GetDescriptor() { return(MessageDescriptorBuilder.New <DescriptorInfo>() .Int32(1, di => di.FieldsCount, (di, count) => di.FieldsCount = count) .MessageArray(2, di => di.Fields, (di, fparam) => di.Fields.Add(fparam), FieldParams.GetDescriptor()) .CreateDescriptor()); }
public static MessageDescriptor <Person> CreateDescriptor() { return(MessageDescriptorBuilder.New <Person>() .Int32(1, x => x.Age, (x, y) => x.Age = y) .Int32(2, x => x.Height, (x, y) => x.Height = y) .Double(3, x => x.Weight, (x, y) => x.Weight = y) .String(4, x => x.Name, (x, y) => x.Name = y) .String(5, x => x.Phone, (x, y) => x.Phone = y, x => x.Phone != null) .CreateDescriptor()); }
public static MessageDescriptor <Test.SuperMess> CreateSuperMessAllUnpackedDescriptor() { return(MessageDescriptorBuilder.New <Test.SuperMess>() .Int32(Test.SuperMess.Int32ValFieldNumber, x => x.Int32Val, (x, y) => x.Int32Val = y) .Message(Test.SuperMess.MessValFieldNumber, x => x.MessVal, (x, y) => x.MessVal = y, CreateMessAllUnpackedDescriptor()) .DoubleArray(Test.SuperMess.DoubleArrFieldNumber, x => x.DoubleArr, (x, y) => x.DoubleArr.Add(y)) .MessageArray(Test.SuperMess.MessArrFieldNumber, x => x.MessArr, (x, y) => x.MessArr.Add(y), CreateMessAllUnpackedDescriptor()) .Int64Array(Test.SuperMess.Int64PackedFieldNumber, x => x.Int64Packed, (x, y) => x.Int64Packed.Add(y)) .String(Test.SuperMess.StringValFieldNumber, x => x.StringVal, (x, y) => x.StringVal = y) .CreateDescriptor()); }
public static MessageDescriptor <Test.Mess> CreateMessAllUnpackedDescriptor() { return(MessageDescriptorBuilder.New <Test.Mess>() .Double(Test.Mess.DoubleValFieldNumber, x => x.DoubleVal, (x, y) => x.DoubleVal = y) .Float(Test.Mess.FloatValFieldNumber, x => x.FloatVal, (x, y) => x.FloatVal = y) .Int32(Test.Mess.Int32ValFieldNumber, x => x.Int32Val, (x, y) => x.Int32Val = y) .Int64(Test.Mess.Int64ValFieldNumber, x => x.Int64Val, (x, y) => x.Int64Val = y) .UInt32(Test.Mess.UInt32ValFieldNumber, x => x.UInt32Val, (x, y) => x.UInt32Val = y) .UInt64(Test.Mess.UInt64ValFieldNumber, x => x.UInt64Val, (x, y) => x.UInt64Val = y) .SInt32(Test.Mess.SInt32ValFieldNumber, x => x.SInt32Val, (x, y) => x.SInt32Val = y) .SInt64(Test.Mess.SInt64ValFieldNumber, x => x.SInt64Val, (x, y) => x.SInt64Val = y) .Fixed32(Test.Mess.Fixed32ValFieldNumber, x => x.Fixed32Val, (x, y) => x.Fixed32Val = y) .Fixed64(Test.Mess.Fixed64ValFieldNumber, x => x.Fixed64Val, (x, y) => x.Fixed64Val = y) .SFixed32(Test.Mess.SFixed32ValFieldNumber, x => x.SFixed32Val, (x, y) => x.SFixed32Val = y) .SFixed64(Test.Mess.SFixed64ValFieldNumber, x => x.SFixed64Val, (x, y) => x.SFixed64Val = y) .Bool(Test.Mess.BoolValFieldNumber, x => x.BoolVal, (x, y) => x.BoolVal = y) .String(Test.Mess.StringValFieldNumber, x => x.StringVal, (x, y) => x.StringVal = y) .Bytes(Test.Mess.BytesValFieldNumber, x => x.BytesVal.ToByteArray(), (x, y) => x.BytesVal = ByteString.CopyFrom(y)) .DoubleArray(Test.Mess.DoubleArrFieldNumber, x => x.DoubleArr, (x, y) => x.DoubleArr.Add(y)) .FloatArray(Test.Mess.FloatArrFieldNumber, x => x.FloatArr, (x, y) => x.FloatArr.Add(y)) .Int32Array(Test.Mess.Int32ArrFieldNumber, x => x.Int32Arr, (x, y) => x.Int32Arr.Add(y)) .Int64Array(Test.Mess.Int64ArrFieldNumber, x => x.Int64Arr, (x, y) => x.Int64Arr.Add(y)) .UInt32Array(Test.Mess.UInt32ArrFieldNumber, x => x.UInt32Arr, (x, y) => x.UInt32Arr.Add(y)) .UInt64Array(Test.Mess.UInt64ArrFieldNumber, x => x.UInt64Arr, (x, y) => x.UInt64Arr.Add(y)) .SInt32Array(Test.Mess.SInt32ArrFieldNumber, x => x.SInt32Arr, (x, y) => x.SInt32Arr.Add(y)) .SInt64Array(Test.Mess.SInt64ArrFieldNumber, x => x.SInt64Arr, (x, y) => x.SInt64Arr.Add(y)) .Fixed32Array(Test.Mess.Fixed32ArrFieldNumber, x => x.Fixed32Arr, (x, y) => x.Fixed32Arr.Add(y)) .Fixed64Array(Test.Mess.Fixed64ArrFieldNumber, x => x.Fixed64Arr, (x, y) => x.Fixed64Arr.Add(y)) .SFixed32Array(Test.Mess.SFixed32ArrFieldNumber, x => x.SFixed32Arr, (x, y) => x.SFixed32Arr.Add(y)) .SFixed64Array(Test.Mess.SFixed64ArrFieldNumber, x => x.SFixed64Arr, (x, y) => x.SFixed64Arr.Add(y)) .BoolArray(Test.Mess.BoolArrFieldNumber, x => x.BoolArr, (x, y) => x.BoolArr.Add(y)) .StringArray(Test.Mess.StringArrFieldNumber, x => x.StringArr, (x, y) => x.StringArr.Add(y)) .BytesArray(Test.Mess.BytesArrFieldNumber, x => x.BytesArr.Select(y => y.ToByteArray()), (x, y) => x.BytesArr.Add(ByteString.CopyFrom(y))) .DoubleArray(Test.Mess.DoublePackedFieldNumber, x => x.DoublePacked, (x, y) => x.DoublePacked.Add(y)) .FloatArray(Test.Mess.FloatPackedFieldNumber, x => x.FloatPacked, (x, y) => x.FloatPacked.Add(y)) .Int32Array(Test.Mess.Int32PackedFieldNumber, x => x.Int32Packed, (x, y) => x.Int32Packed.Add(y)) .Int64Array(Test.Mess.Int64PackedFieldNumber, x => x.Int64Packed, (x, y) => x.Int64Packed.Add(y)) .UInt32Array(Test.Mess.UInt32PackedFieldNumber, x => x.UInt32Packed, (x, y) => x.UInt32Packed.Add(y)) .UInt64Array(Test.Mess.UInt64PackedFieldNumber, x => x.UInt64Packed, (x, y) => x.UInt64Packed.Add(y)) .SInt32Array(Test.Mess.SInt32PackedFieldNumber, x => x.SInt32Packed, (x, y) => x.SInt32Packed.Add(y)) .SInt64Array(Test.Mess.SInt64PackedFieldNumber, x => x.SInt64Packed, (x, y) => x.SInt64Packed.Add(y)) .Fixed32Array(Test.Mess.Fixed32PackedFieldNumber, x => x.Fixed32Packed, (x, y) => x.Fixed32Packed.Add(y)) .Fixed64Array(Test.Mess.Fixed64PackedFieldNumber, x => x.Fixed64Packed, (x, y) => x.Fixed64Packed.Add(y)) .SFixed32Array(Test.Mess.SFixed32PackedFieldNumber, x => x.SFixed32Packed, (x, y) => x.SFixed32Packed.Add(y)) .SFixed64Array(Test.Mess.SFixed64PackedFieldNumber, x => x.SFixed64Packed, (x, y) => x.SFixed64Packed.Add(y)) .BoolArray(Test.Mess.BoolPackedFieldNumber, x => x.BoolPacked, (x, y) => x.BoolPacked.Add(y)) .CreateDescriptor()); }
public static MessageDescriptor <DataSetParameters> GetDescriptor() { return(MessageDescriptorBuilder.New <DataSetParameters>() .Int32(1, di => di.FieldCount, (di, count) => di.FieldCount = count) .MessageArray(2, di => di.Fields.Select(field => new ColumnInfoPair(field.Key, field.Value)), (di, newfield) => { if (di.Fields.Count < di.FieldCount) { di.Fields.Add(newfield.Tag, newfield.ColumnInfo); } }, ColumnInfoPair.GetDescriptor()) .CreateDescriptor()); }
public MessageDescriptor <T> ReadDescriptor <T>(byte[] encodedDescriptor) where T : new() { var descrInfo = DescriptorInfo.GetDescriptor().Read(encodedDescriptor); var builder = MessageDescriptorBuilder.New <T>(); foreach (var fieldParams in descrInfo.Fields) { switch (fieldParams.Type) { case "Boolean": builder.Bool(fieldParams.Number, obj => Convert.ToBoolean(obj.GetType().GetField(fieldParams.Name) .GetValue(obj)), (obj, val) => obj.GetType().GetField(fieldParams.Name) .SetValue(obj, val)); break; case "Double": builder.Double(fieldParams.Number, obj => Convert.ToDouble(obj.GetType().GetField(fieldParams.Name) .GetValue(obj)), (obj, val) => obj.GetType().GetField(fieldParams.Name) .SetValue(obj, val)); break; case "String": builder.String(fieldParams.Number, obj => obj.GetType().GetField(fieldParams.Name) .GetValue(obj).ToString(), (obj, val) => obj.GetType().GetField(fieldParams.Name) .SetValue(obj, val)); break; case "Int32": builder.Int32(fieldParams.Number, obj => Convert.ToInt32(obj.GetType().GetField(fieldParams.Name) .GetValue(obj)), (obj, val) => obj.GetType().GetField(fieldParams.Name) .SetValue(obj, val)); break; } } return(builder.CreateDescriptor()); }