public override void AddAsyncMessageReactor(IAsyncMessageReactor <TMessage> reactor) { if (m_Reactors == null) { m_Reactors = new Dictionary <int, IDisposable>(); } else if (m_Reactors.ContainsKey(reactor.GetHashCode())) { throw new InvalidOperationException("This reactor is already reacting to messages."); } // Hook up the reactor to the stream - every time the stream is written to, // the reactors's React() method will be called. IDisposable observer = m_Stream.Subscribe( async m => await reactor.React(m), () => reactor.OnEndOfStream()); m_Reactors.Add(reactor.GetHashCode(), observer); }
public abstract void AddAsyncMessageReactor(IAsyncMessageReactor <TMessage> reactor);