public SsePublisherActor(string streamName, Type feedClass, int feedPayload, int feedInterval, string feedDefaultId) { _feed = Stage.ActorFor <ISseFeed>(Definition.Has(feedClass, Definition.Parameters(streamName, feedPayload, feedDefaultId))); _subscribers = new Dictionary <string, SseSubscriber>(); _cancellable = Stage.Scheduler.Schedule( SelfAs <IScheduled <object?> >(), null, TimeSpan.FromMilliseconds(10), TimeSpan.FromMilliseconds(feedInterval)); Logger.Info($"SsePublisher started for: {streamName}"); }
public void TestThatFeedFeedsMultipleSubscribers() { _feed = _world.ActorFor <ISseFeed>(() => new AllSseFeedActor("all", 10, "1")); var subscriber1 = new SseSubscriber("all", _client, "ABC123", "41"); var subscriber2 = new SseSubscriber("all", _client, "ABC456", "42"); var subscriber3 = new SseSubscriber("all", _client, "ABC789", "43"); var respondWithSafely = _context.Channel.ExpectRespondWith(3); _feed.To(new List <SseSubscriber> { subscriber1, subscriber2, subscriber3 }); Assert.Equal(3, respondWithSafely.ReadFrom <int>("count")); Assert.Equal(3, _context.Channel.RespondWithCount.Get()); }
public void TestThatFeedFeedsOneSubscriber() { var respondWithSafely = _context.Channel.ExpectRespondWith(1); _feed = _world.ActorFor <ISseFeed>(() => new AllSseFeedActor("all", 10, "1")); var subscriber = new SseSubscriber("all", _client, "ABC123", "42"); _feed.To(new List <SseSubscriber> { subscriber }); Assert.Equal(1, respondWithSafely.ReadFrom <int>("count")); Assert.Equal(1, _context.Channel.RespondWithCount.Get()); var eventsResponse = respondWithSafely.ReadFrom <Response>("eventsResponse"); var events = MessageEvent.From(eventsResponse); Assert.Equal(10, events.Count); }