Esempio n. 1
0
        private Google.Protobuf.MessageParser GetMessageParser(ushort serviceId, ushort messageId, int type)
        {
            string cacheKey = string.Format("{0}_{1}_{2}", serviceId, messageId, type);

            Google.Protobuf.MessageParser tmp = null;
            if (tempCache.ContainsKey(cacheKey))
            {
                tempCache.TryGetValue(cacheKey, out tmp);
            }

            if (tmp == null)
            {
                IMessage tMsg = null;
                if (type == 1)
                {
                    tMsg = _factory.GetRequestTemplate(serviceId, messageId);
                }
                else
                {
                    tMsg = _factory.GetResponseTemplate(serviceId, messageId);
                }
                if (tMsg != null)
                {
                    tmp = tMsg.Descriptor.Parser;
                    tempCache.TryAdd(cacheKey, tmp);
                }
            }
            return(tmp);
        }
Esempio n. 2
0
        public virtual string ToJson(AmpMessage message)
        {
            var    return_code    = 0;
            var    return_message = "";
            string ret            = "";

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

                if (message.Data != null)
                {
                    rspTemp.MergeFrom(message.Data);
                }

                //提取return_message
                var field_msg = rspTemp.Descriptor.FindFieldByName("return_message");
                if (field_msg != null)
                {
                    var retObjV = field_msg.Accessor.GetValue(rspTemp);
                    if (retObjV != null)
                    {
                        return_message = retObjV.ToString();
                    }
                }

                ret = AmpJsonFormatter.Format(rspTemp);
                return(string.Concat("{\"return_code\":", return_code.ToString(), ",\"return_message\":\"", return_message, "\",\"data\":", ClearMetaField(ret), "}"));
            }
            else
            {
                return(string.Concat("{\"return_code\":", ErrorCodes.CODE_INTERNAL_ERROR, ",\"return_message\":\"内部错误\"}"));
            }
        }