Exemplo n.º 1
0
        protected override AmpMessage EncodeRequest(RequestData reqData)
        {
            ushort     serviceId = (ushort)reqData.ServiceId;
            ushort     messageId = (ushort)reqData.MessageId;
            AmpMessage message   = AmpMessage.CreateRequestMessage(serviceId, messageId);
            IMessage   reqTemp   = ProtobufObjectFactory.GetRequestTemplate(serviceId, messageId);

            if (reqTemp == null)
            {
                return(null);
            }
            try
            {
                var descriptor = reqTemp.Descriptor;
                if (!string.IsNullOrEmpty(reqData.Body))
                {
                    reqTemp = descriptor.Parser.ParseJson(reqData.Body);
                }

                if (reqData.Data.Count > 0)
                {
                    foreach (var field in descriptor.Fields.InDeclarationOrder())
                    {
                        if (reqData.Data.ContainsKey(field.Name))
                        {
                            field.Accessor.SetValue(reqTemp, reqData.Data[field.Name]);
                        }
                        else if (reqData.Data.ContainsKey(field.JsonName))
                        {
                            field.Accessor.SetValue(reqTemp, reqData.Data[field.JsonName]);
                        }
                    }
                }


                message.Data = reqTemp.ToByteArray();
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "从HTTP请求中解析数据错误:" + ex.Message);
                message = null;
            }

            return(message);
        }
Exemplo n.º 2
0
        protected override string MessageToJson(AmpMessage message)
        {
            string ret = "";

            if (message != null)
            {
                var rspTemp = ProtobufObjectFactory.GetResponseTemplate(message.ServiceId, message.MessageId);
                if (rspTemp == null)
                {
                    return(ret);
                }

                if (message.Data != null)
                {
                    rspTemp.MergeFrom(message.Data);
                }
                ret = AmpJsonFormatter.Format(rspTemp);
            }
            return(ret);
        }