public static byte[] Encode(IMessage message, PitayaSerializer serializer)
        {
            if (PitayaSerializer.Protobuf == serializer)
            {
                return(message.ToByteArray());
            }


            var jsf        = new JsonFormatter(new JsonFormatter.Settings(true));
            var jsonString = jsf.Format(message);

            return(Encoding.UTF8.GetBytes(jsonString));
        }
        public static IMessage Decode(byte[] buffer, Type type, PitayaSerializer serializer)
        {
            var res = (IMessage)Activator.CreateInstance(type);

            if (PitayaSerializer.Protobuf == serializer)
            {
                res.MergeFrom(buffer);
                return(res);
            }
            var stringified = Encoding.UTF8.GetString(buffer);

            return(JsonParser.Default.Parse(stringified, res.Descriptor));

//            return res;
//            var parser = new MessageParser();

            return((IMessage)JsonUtility.FromJson(stringified, type));
//            return (IMessage) JsonConvert.DeserializeObject(stringified, type);
        }
Example #3
0
        private static PitayaError CreatePitayaError(PitayaBindingError errorBinding, PitayaSerializer serializer)
        {
            var rawData = new byte[errorBinding.Buffer.Len];

            Marshal.Copy(errorBinding.Buffer.Data, rawData, 0, (int)errorBinding.Buffer.Len);

            if (serializer == PitayaSerializer.Protobuf)
            {
                Error error = (Error)ProtobufSerializer.Decode(rawData, typeof(Error), serializer);
                return(new PitayaError(error.Code, error.Msg, error.Metadata));
            }

            var jsonStr = Encoding.UTF8.GetString(rawData);
            var json    = SimpleJson.SimpleJson.DeserializeObject <Dictionary <string, object> >(jsonStr);

            var code = (string)json["code"];
            var msg  = (string)json["msg"];

            Dictionary <string, string> metadata;

            if (json.ContainsKey("metadata"))
            {
                metadata = (Dictionary <string, string>)SimpleJson.SimpleJson.CurrentJsonSerializerStrategy.DeserializeObject(json["metadata"],
                                                                                                                              typeof(Dictionary <string, string>), new Dictionary <string, string>());
            }
            else
            {
                metadata = new Dictionary <string, string>();
            }

            return(new PitayaError(code, msg, metadata));
        }