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