コード例 #1
0
 public BusSubscriptionCache(ISubscriptionObserver observer)
 {
     _observer      = observer;
     _subscriptions =
         new ConcurrentCache <SubscriptionKey, BusSubscription>(
             x => new BusSubscription(x.MessageName, x.CorrelationId, _observer));
 }
コード例 #2
0
 public static void NotifyEnterUnsubscribing(this ISubscriptionObserver observer, ISubscription subscription)
 {
     if (observer != null)
     {
         observer.OnEnterUnsubscribing(subscription);
     }
 }
コード例 #3
0
 public static void NotifyLeaveFailed(this ISubscriptionObserver observer, ISubscription subscription)
 {
     if (observer != null)
     {
         observer.OnLeaveFailed(subscription);
     }
 }
コード例 #4
0
 public static void NotifyDeleted(this ISubscriptionObserver observer, ISubscription subscription)
 {
     if (observer != null)
     {
         observer.OnDeleted(subscription);
     }
 }
コード例 #5
0
 public static void NotifyEnterSubscribing(this ISubscriptionObserver observer, ISubscription subscription, RtmSubscribeRequest request)
 {
     if (observer != null)
     {
         observer.OnEnterSubscribing(subscription, request);
     }
 }
コード例 #6
0
 public static void NotifySubscriptionError(this ISubscriptionObserver observer, ISubscription subscription, RtmSubscriptionError error)
 {
     if (observer != null)
     {
         observer.OnSubscriptionError(subscription, error);
     }
 }
コード例 #7
0
 public static void NotifyUnsubscribeError(this ISubscriptionObserver observer, ISubscription subscription, Exception error)
 {
     if (observer != null)
     {
         observer.OnUnsubscribeError(subscription, error);
     }
 }
コード例 #8
0
 public static void NotifySubscriptionInfo(this ISubscriptionObserver observer, ISubscription subscription, RtmSubscriptionInfo info)
 {
     if (observer != null)
     {
         observer.OnSubscriptionInfo(subscription, info);
     }
 }
コード例 #9
0
 public static void NotifySubscriptionData(this ISubscriptionObserver observer, ISubscription subscription, RtmSubscriptionData data)
 {
     if (observer != null)
     {
         observer.OnSubscriptionData(subscription, data);
     }
 }
コード例 #10
0
 public EndpointSubscriptionCache(ISubscriptionObserver observer)
 {
     _observer             = observer;
     _messageSubscriptions =
         new DictionaryCache <SubscriptionKey, EndpointSubscription>(
             key => new EndpointSubscription(key.MessageName, key.CorrelationId, _observer));
 }
コード例 #11
0
        public static async Task <JToken> CreateSubscriptionAndWaitSubscribed(
            this IRtmClient client,
            string channel,
            string position,
            ISubscriptionObserver observer)
        {
            var tcs  = new TaskCompletionSource <JToken>();
            var sobs = new SubscriptionObserver();

            sobs.OnEnterSubscribed += (s) =>
            {
                tcs.TrySetResult(s.Position);
            };
            sobs.OnEnterFailed += (_) =>
            {
                tcs.TrySetException(new Exception("subscription was removed"));
            };
            sobs.OnDeleted += (_) =>
            {
                tcs.TrySetException(new Exception("subscription was removed"));
            };
            var subCfg = new SubscriptionConfig(SubscriptionModes.Advanced)
            {
                Position = position,
                Observer = new SubscriptionCompoundObserver(sobs, observer)
            };

            client.CreateSubscription(channel, subCfg);
            return(await tcs.Task.ConfigureAwait(false));
        }
コード例 #12
0
        public PeerHandler(Inbox inbox, ISubscriptionObserver observer)
        {
            inbox.Receive <InitializePeerHandler>(init =>
            {
                _peerId  = init.PeerId;
                _peerUri = init.PeerUri;

                _endpointSubscriptionCache = new EndpointSubscriptionCache(observer);
            });
        }
コード例 #13
0
ファイル: BusSubscription.cs プロジェクト: gcheney/Burrows
        public BusSubscription(string messageName, string correlationId, ISubscriptionObserver observer)
        {
            _messageName   = messageName;
            _correlationId = correlationId;
            _observer      = observer;

            _ids = new HashSet <Guid>();

            _subscriptionId = Guid.Empty;
        }
コード例 #14
0
        public PeerCache(ISubscriptionObserver observer, Guid clientId, Uri controlUri)
        {
            _peers   = new DictionaryCache <Uri, ActorRef>();
            _peerIds = new DictionaryCache <Guid, Uri>();

            _peerHandlerFactory = ActorFactory.Create((f, s, i) => new PeerHandler(i, observer));

            // create a peer for our local client
            WithPeer(clientId, controlUri, x => { }, true);
        }
コード例 #15
0
        public EndpointSubscription(string messageName, string correlationId, ISubscriptionObserver observer)
        {
            _messageName   = messageName;
            _correlationId = correlationId;
            _observer      = observer;

            _ids = new Dictionary <Guid, IPeerSubscription>();

            _subscriptionId = Guid.Empty;
        }
コード例 #16
0
 public void CreateSubscription(
     string channel,
     SubscriptionModes mode,
     ISubscriptionObserver observer)
 {
     _rtmModule.CreateSubscription(
         channel,
         new SubscriptionConfig(mode)
     {
         Observer = observer
     });
 }
コード例 #17
0
 public Subscription(
     RtmClient client,
     string subscriptionId,
     SubscriptionModes mode,
     string filter,
     uint?period,
     string position,
     RtmSubscribeHistory history,
     ISubscriptionObserver observer)
     : base(subscriptionId, mode, filter, period, position, history, observer)
 {
     _client = client;
     _state  = new State.Unsubscribed(this);
 }
コード例 #18
0
        public SubscriptionFuture(
            string subscriptionId,
            SubscriptionModes mode,
            string filter,
            uint?period,
            string position,
            RtmSubscribeHistory history,
            ISubscriptionObserver observer)
        {
            SubscriptionId = subscriptionId;
            Mode           = mode;
            Filter         = filter;
            Period         = period;
            Position       = position;
            History        = history;

            Observer = observer ?? new SubscriptionObserver();
        }
コード例 #19
0
        public SubscriptionFuture ProcessSubscribe(SubscriptionConfig config, ISubscriptionObserver observer)
        {
            Log.V("Processing subscribe, subscription: {0}", this);

            if (!MarkAsDeleted || Future != null)
            {
                return(null);
            }

            Future = new SubscriptionFuture(
                subscriptionId: SubscriptionId,
                mode: config.Mode,
                filter: config.Filter,
                period: config.Period,
                position: config.Position,
                history: config.History,
                observer: observer);

            return(Future);
        }
コード例 #20
0
 public void CreateSubscription(string channel, ISubscriptionObserver observer)
 {
     CreateSubscription(channel, SubscriptionModes.Simple, observer);
 }
コード例 #21
0
 public void AddObserver(ISubscriptionObserver observer)
 {
     lock (_observers)
         _observers.Add(observer);
 }
コード例 #22
0
 /// <summary>
 /// Creates a subscription configuration to use in subscription requests, with a specific
 /// subscription modes.
 /// </summary>
 public SubscriptionConfig(SubscriptionModes mode, ISubscriptionObserver observer)
     : this(mode, null, observer)
 {
 }
コード例 #23
0
 /// <summary>
 /// Creates a subscription configuration to use in subscription requests, with a specific
 /// subscription modes.
 /// </summary>
 public SubscriptionConfig(SubscriptionModes mode, string position = null, ISubscriptionObserver observer = null)
 {
     Mode     = mode;
     Position = position;
     Observer = observer;
 }
コード例 #24
0
        public BusSubscriptionEventListener(IServiceBus bus, ISubscriptionObserver observer)
        {
            _endpointUri = bus.Endpoint.Address.Uri;

            _busSubscriptionCache = new BusSubscriptionCache(observer);
        }