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