public override int HandleCommand(CommandContext context, ISyncResult result)
 {
     try
     {
         SessionRequestCommand sRequestCommand = SessionRequestCommand.ParseFrom(context.sSerializeObject);
         if (!sRequestCommand.HasCommandId)
         {
             CLRLogger.GetInstance().LogDevError("commandID error.");
             result.SetSerializedString("commandID error.");
             return(-1);
         }
         byte[] invokeResult = _dicFunc[sRequestCommand.CommandId].Invoke(sRequestCommand);
         if (null == invokeResult)
         {
             return(-1);
         }
         result.SetSerializedObject(invokeResult);
         return(0);
     }
     catch (Exception ex)
     {
         CLRLogger.GetInstance().LogDevError("HandleCommand error:" + ex.Message);
         return(-1);
     }
 }
        /// <summary>
        /// 将deliver deadhead to fpd
        /// </summary>
        /// <param name="generalRequestCommand"></param>
        /// <returns></returns>
        private byte[] DeliverSystemSessionData(SessionRequestCommand sRequestCommand)
        {
            byte[]         serializedDataHead = SessionUtility.SerializeDataHead(_dataHead);
            CommandContext context            = SessionUtility.CreateCommandContext(CommunicationNode.FPD, CommunicationCommandID.XA_SYSTEMSESSION_DATA_CACHE, serializedDataHead);
            int            result             = new CLRContaineeBase().GetCommunicationProxy().AsyncSendCommand(context);

            return((0 == result) ? new byte[] {} : null);
        }
        /// <summary>
        /// Merge datahead
        /// </summary>
        /// <param name="generalRequestCommand"></param>
        /// <returns></returns>
        private byte[] StoreSystemSessionData(SessionRequestCommand sRequestCommand)//deadhead的merge,注意tag的vr
        {
            if (sRequestCommand.ParametersCount < 1)
            {
                return(null);
            }
            byte[] serializeDataHead = sRequestCommand.GetParameters(0).ToByteArray();
            DicomAttributeCollection dAttributeCollection = SessionUtility.DeserializeDataHead(serializeDataHead);

            foreach (DicomAttribute dAttribute in dAttributeCollection)
            {
                if (_dataHead.Contains(dAttribute.Tag))
                {
                    _dataHead.RemoveDicomAttribute(dAttribute);
                }
                _dataHead.AddDicomAttribute(dAttribute);
            }
            return(new byte[] { });
        }
        /// <summary>
        /// Updata processStatus
        /// </summary>
        /// <param name="generalRequestCommand">GeneralRequestCommand object</param>
        /// <returns></returns>
        private ByteString UpdateProcessStatus(SessionRequestCommand sRequestCommand)
        {
            if (sRequestCommand.ParametersCount < 2)
            {
                return(null);
            }
            string     proxyName     = sRequestCommand.GetParameters(0).ToStringUtf8();
            ByteString processStatus = sRequestCommand.GetParameters(1);

            if (_processStatusDic.ContainsKey(proxyName))
            {
                _processStatusDic[proxyName] = processStatus;
            }
            else
            {
                _processStatusDic.Add(proxyName, processStatus);
            }
            return(ByteString.CopyFromUtf8(string.Empty));
        }
 /// <summary>
 /// handle command
 /// </summary>
 /// <param name="context">CommandContext</param>
 /// <param name="result">ISyncResult</param>
 /// <returns></returns>
 public override int HandleCommand(CommandContext context, ISyncResult result)
 {
     try
     {
         SessionRequestCommand sCommand = SessionRequestCommand.ParseFrom(context.sSerializeObject);
         if (!sCommand.HasCommandId || sCommand.ParametersCount < 1)
         {
             result.SetSerializedObject(new byte[] {});
             return(-1);
         }
         ByteString invokeResult = _funDic[sCommand.CommandId].Invoke(sCommand);
         if (null == invokeResult)
         {
             return(-1);
         }
         result.SetSerializedObject(invokeResult.ToByteArray());
         return(0);
     }
     catch (Exception ex)
     {
         CLRLogger.GetInstance().LogDevError("HandleCommand error:" + ex.Message);
         return(-1);
     }
 }
 /// <summary>
 /// Query system status by proxy name
 /// </summary>
 /// <param name="generalRequestCommand"></param>
 /// <returns></returns>
 private byte[] QuerySystemSessionData(SessionRequestCommand sRequestCommand)
 {
     return(SessionUtility.SerializeDataHead(_dataHead));
 }
        /// <summary>
        /// Query processStatus by proxyName
        /// </summary>
        /// <param name="generalRequestCommand">GeneralRequestCommand object</param>
        /// <returns></returns>
        private ByteString QueryProcessStatus(SessionRequestCommand sRequestCommand)
        {
            ByteString proxyName = sRequestCommand.GetParameters(0);

            return(_processStatusDic.ContainsKey(proxyName.ToStringUtf8()) ? _processStatusDic[proxyName.ToStringUtf8()] : null);
        }