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