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); }
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]); } }
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); } } }
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))); }
public override void Receive(TcpCollector gatherer, RCSymbolScalar id) { _inbox.Remove(id, gatherer); }
public abstract void Receive(TcpCollector gatherer, RCSymbolScalar token);
public override void Receive(TcpCollector gatherer, RCSymbolScalar token) { throw new NotImplementedException(); }