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"); }; }
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}"); }; }
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); }