Exemple #1
0
        public override bool TryGet(object[] parameter, out IReactiveStream <IMessage, bool> result)
        {
            if (parameter.Length == 0)
            {
                throw new IndexOutOfRangeException();
            }
            if (!(parameter[0] is UInt32))
            {
                throw new ArgumentOutOfRangeException("parameter");
            }
            UInt32 id = (UInt32)parameter[0];

            streamLock.WriteLock();
            try
            {
                if (!streams.TryGetValue(id, out result))
                {
                    result = new MessageStream <IMessage>
                             (
                        new PriorityDispatcher()
                             );
                    streams.Add(id, result);
                }
                return(true);
            }
            finally
            {
                streamLock.WriteRelease();
            }
        }
Exemple #2
0
 public override bool TryGet(ref IMessage message, out IReactiveStream <IMessage, bool> result)
 {
     streamLock.ReadLock();
     try
     {
         return(streams.TryGetValue(message.Id, out result));
     }
     finally
     {
         streamLock.ReadRelease();
     }
 }