示例#1
0
        public virtual void callAsync(T args, string consumerId, ICallAsyncListener <T> listener, int timeout)
        {
            Message <T> envelope = new Message <T>();

            envelope.Id   = (queuePath + "/call-" + callCurId++);
            envelope.Body = (args);
            MessageEnvelope argsEnv = envelope.createEnvelope();

            argsEnv.Body.MessageUserBody.QueuePath  = this.QueuePath;
            argsEnv.Body.MessageUserBody.ConsumerId = consumerId;
            IConsumer <T> consumer = null;

            lock (consumers)
            {
                if (!consumers.ContainsKey(consumerId))
                {
                    throw new Exception("Consumer with id:" + consumerId + " not found!");
                }
                else
                {
                    consumer = consumers[consumerId];
                }
            }
            if (consumer is IRemoteConsumer <T> )
            {
                ITransport consTransport = ((IRemoteConsumer <T>)consumer).NetworkTransport;
                consTransport.callAsync(argsEnv, new ProxyCallAsyncListener <T>(listener), timeout);
            }
            else
            {
                throw new System.Exception("Call enabled only for remote consumer !");
            }
        }
示例#2
0
        public void callAsync(T args, ITransport forTransport, ICallAsyncListener <T> listener, int timeout)
        {
            Message <T> envelope = new Message <T>();

            envelope.Id   = (this.sessionName + "/call-" + callCurId++);
            envelope.Body = (args);
            MessageEnvelope argsEnv = envelope.createEnvelope();

            argsEnv.Body.MessageUserBody.QueuePath  = (this.sessionName);
            argsEnv.Body.MessageUserBody.ConsumerId = (this.pointName);

            forTransport.callAsync(argsEnv, new ProxyCallAsyncListener <T>(listener), timeout);
        }
示例#3
0
 public virtual void callAsync(T args, string consumerId, ICallAsyncListener <T> listener)
 {
     callAsync(args, consumerId, listener, 120);
 }
示例#4
0
 public ProxyCallAsyncListener(ICallAsyncListener <T> listener)
 {
     this.listener = listener;
 }
示例#5
0
 public void callAsync(T args, ICallAsyncListener <T> listener, int timeout)
 {
     callAsync(args, this.transport, listener, timeout);
 }
示例#6
0
 public void callAsync(T args, ICallAsyncListener <T> listener)
 {
     callAsync(args, this.transport, listener);
 }
示例#7
0
 public void callAsync(T args, ITransport forTransport, ICallAsyncListener <T> listener)
 {
     callAsync(args, forTransport, listener, 120);
 }