/// <summary> /// ��Ԫ����ת��Ϊ�������ͻ����� /// </summary> /// <param name="instance">Ŀ�����</param> /// <param name="result">�������</param> /// <param name="container">������������</param> public override GetObjectResultTypes Process(object instance, GetObjectAnalyseResult result, INetworkDataContainer container) { MessageIdentity identity; if(!container.TryReadMessageIdentity(out identity)) return GetObjectResultTypes.NotEnoughData; result.SetValue(instance, identity); return GetObjectResultTypes.Succeed; }
/// <summary> /// 从元数据转换为第三方客户数据 /// </summary> /// <param name="instance">目标对象</param> /// <param name="result">分析结果</param> /// <param name="container">网络数据容器</param> public override GetObjectResultTypes Process(object instance, GetObjectAnalyseResult result, INetworkDataContainer container) { MessageIdentity identity; if (!container.TryReadMessageIdentity(out identity)) { return(GetObjectResultTypes.NotEnoughData); } result.SetValue(instance, identity); return(GetObjectResultTypes.Succeed); }
/// <summary> /// 追加一个新的数据段 /// </summary> /// <param name="args">数据段接受参数</param> public void Append(SegmentReceiveEventArgs args) { lock (_lockObj) { _container.AppendNetworkData(args); MessageIdentity identity; if (!_container.TryReadMessageIdentity(out identity)) { _container.ResetOffset(); return; } _container.ResetOffset(); Type msgType = _protocolStack.GetMessageType(identity.Command, false); if (msgType == null) { _tracing.Error("#Type of Thrift message has no any registered .NET type. #Type: {0}, seqID={1}, data: \r\n{2}", identity.Command, identity.SequenceId, _container.Dump()); } else { try { ThriftMessage msg; if (ThriftObjectEngine.TryGetObject(msgType, _container, out msg) != GetObjectResultTypes.Succeed) { return; } _container.UpdateOffset(); OnParseSucceed(new LightSingleArgEventArgs <List <ThriftMessage> >(new List <ThriftMessage> { msg })); } catch (Exception ex) { _tracing.Error(ex, null); } } } }