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