コード例 #1
0
ファイル: GatewayClient.cs プロジェクト: e74102tw/TEST
        void OnMessageArrival(object sender, GatewayMessageArgs args)
        {
            switch (args.EventId)
            {
            case ManagedEventType.Discnnect:
                m_GatewayConnect = false;
                break;

            case ManagedEventType.EntityArrival:
            case ManagedEventType.ResumeRequest:
                if (args.Destination == m_Gateway.EntityName)
                {
                    m_GatewayConnect = true;
                }
                break;

            default:
                if ((m_GatewaySendId != 0) && (m_GatewaySendId == args.MessageId))
                {
                    m_GatewaySendId = 0;
                    m_GatewayResult = args;
                    m_GatewaySync.Set();
                }
                break;
            }
        }
コード例 #2
0
ファイル: GatewayClient.cs プロジェクト: e74102tw/TEST
        public IMessage MessageGateWayRequest(string StdMessageName, string destClassName, Dictionary <string, string> dicParam, uint attach, int timeout)
        {
            StdMessage message = new StdMessage(StdMessageName);

            foreach (string strKey in dicParam.Keys)
            {
                message.Parameters.Add(strKey, dicParam[strKey]);
            }

            int l_TimeOut = timeout == 0 ? m_GatewayTimeout : timeout;

            m_GatewaySync.Reset();
            m_GatewayResult = null;
            m_GatewaySendId = this.m_Gateway.Request(destClassName, message, attach);
            if (m_GatewaySendId == 0)
            {
                return(null);
            }
            if (!m_GatewaySync.WaitOne(l_TimeOut, true))
            {
                m_GatewaySendId = 0;
                return(null);
            }
            return(m_GatewayResult.UserMessage);
        }