コード例 #1
0
        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);
        }
コード例 #2
0
 public abstract void AddAsyncMessageReactor(IAsyncMessageReactor <TMessage> reactor);