public T Deserialize <T>(pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var bytes = new byte[_length];

            Marshal.Copy(_str, bytes, 0, bytes.Length);
            return(parser.ParseFrom(bytes));
        }
Пример #2
0
 static Func <byte[], T> DeserializerFn(pb::MessageParser <T> parser)
 {
     return((serialized) =>
     {
         pb::CodedInputStream inStream = new pb::CodedInputStream(serialized);
         return parser.ParseFrom(inStream);
     });
 }
Пример #3
0
        public static T DeserializeProto <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var serializedProto = Marshal.PtrToStructure <SerializedProto>(ptr);
            var bytes           = new byte[serializedProto.length];

            Marshal.Copy(serializedProto.str, bytes, 0, bytes.Length);

            return(parser.ParseFrom(bytes));
        }
        /// <summary>
        /// </summary>
        public static CalculatorGraphConfig ParseFromTextFormat(this pb::MessageParser <CalculatorGraphConfig> parser, string configText)
        {
            UnsafeNativeMethods.mp_api__ConvertFromCalculatorGraphConfigTextFormat(configText, out var serializedProtoPtr).Assert();

            var config = Protobuf.DeserializeProto(serializedProtoPtr, CalculatorGraphConfig.Parser);

            UnsafeNativeMethods.mp_api_SerializedProto__delete(serializedProtoPtr);

            return(config);
        }
Пример #5
0
 public static CalculatorGraphConfig ParseFromTextFormat(this pb::MessageParser <CalculatorGraphConfig> _, string configText)
 {
     if (UnsafeNativeMethods.mp_api__ConvertFromCalculatorGraphConfigTextFormat(configText, out var serializedProto))
     {
         var config = serializedProto.Deserialize(CalculatorGraphConfig.Parser);
         serializedProto.Dispose();
         return(config);
     }
     throw new MediaPipeException("Failed to parse config text. See error logs for more details");
 }
Пример #6
0
        public static T FromPtr <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var inner = Marshal.PtrToStructure <SerializedProtoInner>(ptr);
            var bytes = new byte[inner.length];

            unsafe {
                Marshal.Copy((IntPtr)inner.serializedStr, bytes, 0, inner.length);
            }

            return(parser.ParseFrom(bytes));
        }
Пример #7
0
        public static List <T> DeserializeProtoVector <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var serializedProtoVector = Marshal.PtrToStructure <SerializedProtoVector>(ptr);
            var protos = new List <T>(serializedProtoVector.size);

            unsafe {
                byte **protoPtr = (byte **)serializedProtoVector.data;

                for (var i = 0; i < serializedProtoVector.size; i++)
                {
                    protos.Add(Protobuf.DeserializeProto <T>((IntPtr)(*protoPtr++), parser));
                }
            }

            return(protos);
        }
Пример #8
0
        public static List <T> FromPtr <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var inner  = Marshal.PtrToStructure <SerializedProtoVectorInner>(ptr);
            var protos = new List <T>(inner.size);

            unsafe {
                var arr = inner.data;

                for (var i = 0; i < inner.size; i++)
                {
                    protos.Add(SerializedProto.FromPtr <T>((IntPtr)(*arr++), parser));
                }
            }

            return(protos);
        }
Пример #9
0
        public List <T> Deserialize <T>(pb::MessageParser <T> parser) where T : pb::IMessage <T>
        {
            var protos = new List <T>(size);

            unsafe {
                SerializedProto *protoPtr = (SerializedProto *)data;

                for (var i = 0; i < size; i++)
                {
                    var serializedProto = Marshal.PtrToStructure <SerializedProto>((IntPtr)protoPtr++);
                    protos.Add(serializedProto.Deserialize <T>(parser));
                }
            }

            return(protos);
        }
Пример #10
0
 public ProtoMarshaller(pb::MessageParser <T> parser) :
     base(ProtoMarshaller <T> .Serializer, ProtoMarshaller <T> .DeserializerFn(parser))
 {
 }