public FeedSubscriber( ILogger <FeedSubscriber> logger, FeedSubscriberFlow subscriptionFlow, TranslationSubscriptionCollection subscriptions, IFeedManager feedManager, IProviderAdapter providerAdapter ) { this.logger = logger; this.feedSubscriptionFlow = subscriptionFlow; this.subscriptions = subscriptions; this.feedManager = feedManager; this.providerAdapter = providerAdapter; }
public FeedListenerFlow( ILogger <FeedListenerFlow> logger, IMessageDumper messageDumper, IWebSocketMessageParser webSocketMessageParser, IProviderAdapter providerAdapter, IFeedSubscriber <TranslationState> feedSubscriber, TranslationSubscriptionCollection subscriptions ) { this.logger = logger; this.messageDumper = messageDumper; this.webSocketMessageParser = webSocketMessageParser; this.providerAdapter = providerAdapter; this.feedSubscriber = feedSubscriber; this.subscriptions = subscriptions; // 1 parseFeedMessageTransformManyBlock = new TransformManyBlock <MessageContext <string>, MessageContext <object, string> >(ParseFeedMessageHandler); // 2 messageRouterBlock = new ActionBlock <MessageContext <object, string> >(MessageRouterHandler); // 3-1 startSubscribingActionBlock = new ActionBlock <MessageContext <LoginResponseMessage> >(StartSubscribingHandler); // 3-2 translationToAdapterActionBlock = new ActionBlock <MessageContext <Translation> >(TranslationToAdapterHandler); // 3-3 eventsDataToAdapterActionBlock = new ActionBlock <MessageContext <EventsMessage> >(EventsDataToAdapterHandler); // 3-4 pingToAdapterActionBlock = new ActionBlock <MessageContext <PingMessage> >(PingToAdapterHandler); // Building flow parseFeedMessageTransformManyBlock.LinkTo(messageRouterBlock); }
public FeedSubscriberFlow( ILogger <FeedManager> logger, IOptions <FeedSubscriberOptions> options, IMessageDumper messageDumper, TranslationSubscriptionCollection subscriptions, HttpClientManager httpClientManager, IHttpRequestMessageFactory httpRequestMessageFactory, IProviderAdapter providerAdapter, IFeedManager feedManager ) { this.logger = logger; this.options = options.Value; this.messageDumper = messageDumper; this.subscriptions = subscriptions; this.httpClientManager = httpClientManager; this.httpRequestMessageFactory = httpRequestMessageFactory; this.providerAdapter = providerAdapter; this.feedManager = feedManager; // Flow 1 translationCreateRequestBlock = new TransformManyBlock <MessageContext <TranslationRequest, TranslationSubscription>, MessageContext <HttpRequestMessage, TranslationSubscription> >( TranslationCreateRequestHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 2 translationExecRequestBlock = new TransformManyBlock <MessageContext <HttpRequestMessage, TranslationSubscription>, MessageContext <HttpResponseMessage, TranslationSubscription> >( TranslationExecRequestHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 3 translationCheckHashBlock = new TransformManyBlock <MessageContext <HttpResponseMessage, TranslationSubscription>, MessageContext <string, TranslationSubscription> >( TranslationCheckHashHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 4 translationParseResponseBlock = new TransformManyBlock <MessageContext <string, TranslationSubscription>, MessageContext <Translation, TranslationSubscription> >( TranslationMessageParseHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 5 translationDumpBlock = new TransformManyBlock <MessageContext <Translation, TranslationSubscription>, MessageContext <Translation, TranslationSubscription> >( TranslationDumpHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 6 translationRouterBlock = new BroadcastBlock <MessageContext <Translation> >(t => t); // Flow 7-1 translationToAdapterBlock = new ActionBlock <MessageContext <Translation> >( TranslationToAdapterHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 7-2 translationSubscriptionBlock = new ActionBlock <MessageContext <Translation> >( TranslationSubscriptionHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); translationCreateRequestBlock.LinkTo(translationExecRequestBlock); translationExecRequestBlock.LinkTo(translationCheckHashBlock); translationCheckHashBlock.LinkTo(translationParseResponseBlock); translationParseResponseBlock.LinkTo(translationDumpBlock); translationDumpBlock.LinkTo(translationRouterBlock); translationRouterBlock.LinkTo(translationToAdapterBlock); translationRouterBlock.LinkTo(translationSubscriptionBlock); }