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); }
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\":\"内部错误\"}")); } }