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));
        }
Пример #4
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));
        }