예제 #1
0
 public override void Receive(TcpCollector gatherer, RCSymbolScalar id)
 {
     // It's not honoring the id here.
     // We should make sure to return the response to the appropriate
     // request, not rely on the order.
     // _inbox.Remove(runner, closure);
     _inbox.Remove(id, gatherer);
 }
예제 #2
0
        protected void DoReceive(RCRunner runner, RCClosure closure, RCSymbol right)
        {
            RCBot        bot      = runner.GetBot(closure.Bot);
            TcpCollector gatherer = new TcpCollector(runner, closure, right);

            for (int i = 0; i < right.Count; ++i)
            {
                long   channel = (long)right[i].Part(0);
                Client client  = (Client)bot.Get(channel);
                client.Receive(gatherer, right[i]);
            }
        }
예제 #3
0
 public void Add(RCSymbolScalar id, RCValue message)
 {
     lock (_lock)
     {
         TcpCollector waiter = null;
         // Console.Out.WriteLine ("Client message in:{0}", id);
         if (_waiters.TryGetValue(id, out waiter))
         {
             _waiters.Remove(id);
             waiter.Accept(id, message);
         }
         else
         {
             _replies.Add(id, message);
         }
     }
 }
예제 #4
0
 public void Remove(RCSymbolScalar id, TcpCollector waiter)
 {
     lock (_lock)
     {
         RCValue message = null;
         if (_replies.TryGetValue(id, out message))
         {
             _replies.Remove(id);
             waiter.Accept(id, message);
         }
         else
         {
             _waiters.Add(id, waiter);
         }
     }
     // Console.Out.WriteLine ("Client waiting on {0}", new RCSymbol(new
     // RCArray<RCSymbolScalar>(_waiters.Keys)));
 }
예제 #5
0
 public override void Receive(TcpCollector gatherer, RCSymbolScalar id)
 {
     _inbox.Remove(id, gatherer);
 }
예제 #6
0
 public abstract void Receive(TcpCollector gatherer, RCSymbolScalar token);
예제 #7
0
 public override void Receive(TcpCollector gatherer, RCSymbolScalar token)
 {
     throw new NotImplementedException();
 }