public FeedManager( ILogger <FeedManager> logger, IWebSocketClient webSocketClient, IMessageDumper messageDumper ) { this.logger = logger; this.webSocketClient = webSocketClient; this.messageDumper = messageDumper; }
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 ProviderManagerFlow( ILogger <ProviderManagerFlow> logger, IMessageDumper messageDumper, HttpClientManager httpClientManager, IHttpRequestMessageFactory httpRequestMessageFactory, ITranslationDistributer translationDistributer ) { this.logger = logger; this.messageDumper = messageDumper; this.httpClientManager = httpClientManager; this.httpRequestMessageFactory = httpRequestMessageFactory; this.translationDistributer = translationDistributer; createHttpRequestBlock = new TransformManyBlock <MessageContext <TranslationsRequest>, MessageContext <HttpRequestMessage> >( CreateHttpRequestHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); execHttpRequestBlock = new TransformManyBlock <MessageContext <HttpRequestMessage>, MessageContext <HttpResponseMessage> >( ExecHttpRequestHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); parseHttpResponseBlock = new TransformManyBlock <MessageContext <HttpResponseMessage>, MessageContext <string> >( ParseHttpResponseHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); broadcastResponseBlock = new BroadcastBlock <MessageContext <string> >(t => t); dumpResponseBlock = new ActionBlock <MessageContext <string> >( DumpResponseHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); deserializeResponseBlock = new TransformManyBlock <MessageContext <string>, MessageContext <Translation> >( DeserializeResponseHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); translationDistributerBlock = new ActionBlock <MessageContext <Translation> >( TranslationDistributerHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); createHttpRequestBlock.LinkTo(execHttpRequestBlock); execHttpRequestBlock.LinkTo(parseHttpResponseBlock); parseHttpResponseBlock.LinkTo(broadcastResponseBlock); broadcastResponseBlock.LinkTo(dumpResponseBlock); broadcastResponseBlock.LinkTo(deserializeResponseBlock); deserializeResponseBlock.LinkTo(translationDistributerBlock); }
public AdapterDataFlow( ILogger <AdapterDataFlow> logger, IMessageDumper messageDumper, ITransmitterAdapterHost transmitterHost, TranslationSubscriptionCollection subscriptions, ITransmitterCommandsFactory transmitterCommandsFactory, AdapterConfiguration adapterConfiguration ) { this.logger = logger; this.messageDumper = messageDumper; this.transmitterHost = transmitterHost; this.subscriptions = subscriptions; this.transmitterCommandsFactory = transmitterCommandsFactory; this.adapterConfiguration = adapterConfiguration; // Flow 1-1 translationCheckBlock = new TransformManyBlock <MessageContext <Translation>, MessageContext <Translation> >( TranslationCheckHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 1-2 eventMessageTransformBlock = new TransformManyBlock <MessageContext <EventsMessage>, MessageContext <EventData, TranslationSubscription> >( EventMessageTransformHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 2-1 translationCreateCommandBlock = new TransformManyBlock <MessageContext <Translation>, MessageContext <ITransmitterCommand, string> >( TranslationCreateCommandHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 2-2 eventDataCreateCommandBlock = new TransformManyBlock <MessageContext <EventData, TranslationSubscription>, MessageContext <ITransmitterCommand, string> >( EventDataCreateCommandHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 2-3 pingMessageCreateCommandBlock = new TransformManyBlock <MessageContext <PingMessage>, MessageContext <ITransmitterCommand, string> >( PingMessageCreateCommandHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 3 sendCommandBlock = new TransformManyBlock <MessageContext <ITransmitterCommand, string>, MessageContext <ITransmitterCommand, string> > ( SendCommandHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 3 writeDumpBlock = new ActionBlock <MessageContext <ITransmitterCommand, string> >( WriteDumpHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); translationCheckBlock.LinkTo(translationCreateCommandBlock); eventMessageTransformBlock.LinkTo(eventDataCreateCommandBlock); translationCreateCommandBlock.LinkTo(sendCommandBlock); eventDataCreateCommandBlock.LinkTo(sendCommandBlock); pingMessageCreateCommandBlock.LinkTo(sendCommandBlock); sendCommandBlock.LinkTo(writeDumpBlock); }
public AdapterDataFlow( ILogger <AdapterDataFlow> logger, IMessageDumper messageDumper, ITransmitterAdapterHost transmitterHost, TranslationSubscriptionCollection subscriptions, ITransmitterCommandsFactory transmitterCommandsFactory, AdapterConfiguration adapterConfiguration ) { this.logger = logger; this.messageDumper = messageDumper; this.transmitterHost = transmitterHost; this.subscriptions = subscriptions; this.transmitterCommandsFactory = transmitterCommandsFactory; this.adapterConfiguration = adapterConfiguration; // Flow 1-1 adaptApiMessageBlock = new TransformManyBlock <MessageContext <ApiResponseParsed>, MessageContext <AdaptMessage> >( AdaptApiMessageHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 1-2 adaptFeedMessageBlock = new TransformManyBlock <MessageContext <FeedMessageReady>, MessageContext <AdaptMessage> >( AdaptFeedMessageHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 2 createTransmitterCommandsBlock = new TransformManyBlock <MessageContext <AdaptMessage>, MessageContext <ITransmitterCommand> >( CreateTransmitterCommandsHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 3 broadcastTransmitterCommandBlock = new BroadcastBlock <MessageContext <ITransmitterCommand> >(t => t); // Flow 4-1 sendCommandBlock = new ActionBlock <MessageContext <ITransmitterCommand> > ( SendCommandHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); // Flow 4-2 writeDumpBlock = new ActionBlock <MessageContext <ITransmitterCommand> >( WriteDumpHandler, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism } ); adaptApiMessageBlock.LinkTo(createTransmitterCommandsBlock); adaptFeedMessageBlock.LinkTo(createTransmitterCommandsBlock); createTransmitterCommandsBlock.LinkTo(broadcastTransmitterCommandBlock); broadcastTransmitterCommandBlock.LinkTo(sendCommandBlock); broadcastTransmitterCommandBlock.LinkTo(writeDumpBlock); }
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); }