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); }
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)); }