public static QueueAsync <RtmSubscriptionData> CreateSubscriptionDataQueue(this ISubscriptionEventSource source)
        {
            var queue = new QueueAsync <RtmSubscriptionData>();

            source.SetSubscriptionDataQueue(queue);
            return(queue);
        }
        public static void SetSubscribeUnsubscribeErrorObserver(this ISubscriptionEventSource source, IObservableSink <string> observer)
        {
            source.OnSubscribeError += (_, exn) =>
            {
                if (exn is PduException)
                {
                    var pduExn = (PduException)exn;
                    observer.Next($"rtm:subscribe-error:{exn.GetType().Name}:{pduExn.Error?.Code}");
                }
                else
                {
                    observer.Next($"rtm:subscribe-error:{exn.GetType().Name}");
                }
            };

            source.OnUnsubscribeError += (_, exn) =>
            {
                if (exn is PduException)
                {
                    var pduExn = (PduException)exn;
                    observer.Next($"rtm:unsubscribe-error:{exn.GetType().Name}:{pduExn.Error?.Code}");
                }
                else
                {
                    observer.Next($"rtm:unsubscribe-error:{exn.GetType().Name}");
                }
            };
        }
 public static void SetSubscriptionDataQueue(
     this ISubscriptionEventSource source,
     IObservableSink <RtmSubscriptionData> observer)
 {
     source.OnSubscriptionData += (_, data) =>
     {
         observer.Next(data);
     };
 }
 public static void SetSubscriptionStateObserver(this ISubscriptionEventSource source, IObservableSink <string> observer)
 {
     source.OnCreated            += (_) => { observer.Next("rtm:created"); };
     source.OnEnterUnsubscribed  += (_) => { observer.Next("rtm:enter-unsubscribed"); };
     source.OnLeaveUnsubscribed  += (_) => { observer.Next("rtm:leave-unsubscribed"); };
     source.OnEnterSubscribing   += (_, r) => { observer.Next("rtm:enter-subscribing"); };
     source.OnLeaveSubscribing   += (_) => { observer.Next("rtm:leave-subscribing"); };
     source.OnEnterSubscribed    += (_) => { observer.Next("rtm:enter-subscribed"); };
     source.OnLeaveSubscribed    += (_) => { observer.Next("rtm:leave-subscribed"); };
     source.OnEnterUnsubscribing += (_) => { observer.Next("rtm:enter-unsubscribing"); };
     source.OnLeaveUnsubscribing += (_) => { observer.Next("rtm:leave-unsubscribing"); };
     source.OnDeleted            += (_) => { observer.Next("rtm:deleted"); };
     source.OnEnterFailed        += (_) => { observer.Next("rtm:enter-failed"); };
     source.OnLeaveFailed        += (_) => { observer.Next("rtm:leave-failed"); };
 }
示例#5
0
        private static EventStoreSubscriptions SampleSubscriptions()
        {
            var sources = new ISubscriptionEventSource[]
            {
                new MsSqlEventSource(new JilSerializer(), connectionString, 1000),
                // new SomeApiEventSource()
            };

            return(new EventStoreSubscriptions(new MsSqlPollerStateRepository(connectionString).Destroy(true).Initialize())
                   .WithDefaultContractsRegistry(typeof(SampleRunner).Assembly, typeof(MsSqlEventSource).Assembly)
                   .WithLogger(new NLogLogger("Ses.Subscriptions"))
                   .WithUpConverterFactory(new DefaultUpConverterFactory(typeof(SampleRunner).Assembly))
                   .Add(new ProjectionsSubscriptionPoller(sources))
                   .Add(new ProcessManagersSubscriptionPoller(sources))
                   .Add(new EmailSenderSubscriptionPoller(sources)));
        }
 public static void SetSubscriptionPduObserver(this ISubscriptionEventSource source, IObservableSink <string> observer)
 {
     source.OnSubscriptionData += (_, pdu) =>
     {
         foreach (var m in pdu.Messages)
         {
             observer.Next($"rtm:subscription-data:{m?.ToString()}");
         }
     };
     source.OnSubscriptionInfo += (_, pdu) =>
     {
         observer.Next($"rtm:subscription-info:{pdu.Info}");
     };
     source.OnSubscriptionError += (_, pdu) =>
     {
         observer.Next($"rtm:subscription-error:{pdu.Code}");
     };
 }
示例#7
0
        private static long GetMinSequenceIdFor(IContractsRegistry contractsRegistry, List <PollerState> pollerStates, ISubscriptionEventSource source)
        {
            var  sourceContractName = contractsRegistry.GetContractName(source.GetType());
            long?min = null;

            foreach (var x in pollerStates)
            {
                if (x.SourceContractName != sourceContractName)
                {
                    continue;
                }
                if (min == null || min > x.EventSequenceId)
                {
                    min = x.EventSequenceId;
                }
            }
            return(min ?? 0);
        }