Exemplo n.º 1
0
 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());
 }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
 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());
 }
Exemplo n.º 4
0
 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());
 }
Exemplo n.º 5
0
 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());
 }
Exemplo n.º 6
0
 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());
 }
Exemplo n.º 7
0
 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());
 }
Exemplo n.º 8
0
 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());
 }
Exemplo n.º 9
0
 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());
 }
Exemplo n.º 10
0
        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());
        }
Exemplo n.º 11
0
 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());
 }
Exemplo n.º 12
0
        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());
        }