Esempio n. 1
0
        protected MessageProcessor(
            DispatcherQueueSetting setting,
            IReliableLog <TMessage> inputMessageQueue,
            IReliableLog <OutputMessage> outputMessageQueue,
            IMessageFilteringEngine <TMessage> filteringEngine,
            IResultReporter resultReporter)
            : base(nameof(MessageProcessor <TMessage>))
        {
            this.setting            = setting;
            this.inputMessageQueue  = inputMessageQueue;
            this.outputMessageQueue = outputMessageQueue;
            this.filteringEngine    = filteringEngine;
            this.resultReporter     = resultReporter;

            this.processorComponents          = new ComponentManager(this.setting.Name, "MessageProcessorContainer");
            this.processorComponents.Faulted += (s, e) => this.Fault(e.Exception);

            this.messageDispatcher = MessageDispatcher.Create(
                this.setting,
                this.outputMessageQueue,
                this.resultReporter);
            this.processorComponents.Add(this.messageDispatcher);

            this.messagePump = MessagePump <TMessage> .Create(
                this.setting,
                this.inputMessageQueue,
                this.filteringEngine,
                this.messageDispatcher);

            this.processorComponents.Add(this.messagePump);
        }
Esempio n. 2
0
        protected MessageDispatcher(
            DispatcherQueueSetting setting,
            IReliableLog <OutputMessage> outputMessageQueue,
            IResultReporter resultReporter)
            : base(nameof(MessageDispatcher))
        {
            this.setting            = setting;
            this.outputMessageQueue = outputMessageQueue;
            this.resultReporter     = resultReporter;
            this.pushWorkers        = new List <IPushWorker>();
            this.random             = new ThreadSafeRandom();

            this.dispatcherComponents          = new ComponentManager(this.setting.Name, "MessageDispatcherContainer");
            this.dispatcherComponents.Faulted += (s, e) => this.Fault(e.Exception);

            for (var i = 0; i < this.setting.PushWorkerCount; ++i)
            {
                var pushWorker = PushWorker.Create(
                    this.setting,
                    this.outputMessageQueue,
                    this,
                    this.resultReporter);

                this.pushWorkers.Add(pushWorker);
                this.dispatcherComponents.Add(pushWorker);
            }
        }
 public RowTransformer(
     IColumnMapBuilder columnMapBuilder,
     IRowTransformerFactory <TRowTransformer> factory,
     ITransformationRunner <TRowTransformer> transformerRunner,
     IResultReporter reporter)
     : base(columnMapBuilder, factory, transformerRunner, reporter)
 {
 }
 public RowFilterer(
     IColumnMapBuilder columnMapBuilder,
     IDocumentTransformerFactory <Filtering.IRowMatchEvaluator> factory,
     ITransformationRunner <Filtering.IRowMatchEvaluator> transformerRunner,
     IResultReporter reporter)
     : base(columnMapBuilder, factory, transformerRunner, reporter)
 {
 }
Esempio n. 5
0
 public static InputMessageFilteringEngine Create(
     DispatcherQueueSetting dispatcherQueueSetting,
     IResultReporter resultReporter)
 {
     return(new InputMessageFilteringEngine(
                dispatcherQueueSetting,
                resultReporter));
 }
Esempio n. 6
0
        private TurtleGame GetTurtleGame(IResultReporter resultReporter)
        {
            var gameSettings = new GameSettingsBuilder().Build();
            IBoardController boardController = new BoardController(gameSettings);

            ISequencesRetriever sequencesRetriever = new InMemorySequenceRetriever();
            ISequenceController sequenceController = new SequenceController(sequencesRetriever);

            return(new TurtleGame(boardController, sequenceController, resultReporter));
        }
Esempio n. 7
0
        public void Constructor_GivenNullResultReporter_ShouldThrowError()
        {
            IBoardController    boardController    = new Mock <IBoardController>().Object;
            ISequenceController sequenceController = new Mock <ISequenceController>().Object;
            IResultReporter     resultReporter     = null;

            var exception = Record.Exception(() => new TurtleGame(boardController, sequenceController, resultReporter));

            Assert.IsType <ArgumentNullException>(exception);
        }
Esempio n. 8
0
 public static IMessageDispatcher Create(
     DispatcherQueueSetting setting,
     IReliableLog <OutputMessage> outputMessageQueue,
     IResultReporter resultReporter)
 {
     return(new MessageDispatcher(
                setting,
                outputMessageQueue,
                resultReporter));
 }
Esempio n. 9
0
 public static OutputMessageFilteringEngine Create(
     DispatcherQueueSetting dispatcherQueueSetting,
     IMessageFilteringEngine <InputMessage> inputMessageFilteringEngine,
     IResultReporter resultReporter)
 {
     return(new OutputMessageFilteringEngine(
                dispatcherQueueSetting,
                inputMessageFilteringEngine,
                resultReporter));
 }
Esempio n. 10
0
 protected OutputMessageFilteringEngine(
     DispatcherQueueSetting setting,
     IMessageFilteringEngine <InputMessage> inputMessageFilteringEngine,
     IResultReporter resultReporter)
     : base(nameof(OutputMessageFilteringEngine))
 {
     this.setting = setting;
     this.inputMessageFilteringEngine = inputMessageFilteringEngine;
     this.resultReporter = resultReporter;
 }
 public DocumentTransformer(
     IColumnMapBuilder columnMapBuilder,
     IDocumentTransformerFactory <TTransformer> factory,
     ITransformationRunner <TTransformer> transformerRunner,
     IResultReporter reporter)
 {
     this.columnMapBuilder  = columnMapBuilder;
     this.factory           = factory;
     this.transformerRunner = transformerRunner;
     this.reporter          = reporter;
 }
Esempio n. 12
0
        public MessageDispatcher(StatefulServiceContext context)
            : base(context)
        {
            this.components = new ComponentManager(nameof(MessageDispatcher), "RootContainer");

            var partitionSetting            = DispatcherPartitionSetting.Create();
            var resultReporter              = ResultReporter.Create();
            var inputMessageFilteringEngine = InputMessageFilteringEngine.Create(partitionSetting.InstantQueueSetting, resultReporter);

            // Delayed Queue
            IReliableLog <OutputMessage> nextOutputReliableLog = null;

            for (var i = partitionSetting.DelayedQueueSettings.Count - 1; i >= 0; i--)
            {
                var setting = partitionSetting.DelayedQueueSettings[i];
                var outputMessageFilteringEngine = OutputMessageFilteringEngine.Create(setting, inputMessageFilteringEngine, resultReporter);
                var outputReliableLog            = ReliableLog <OutputMessage> .Create(setting, this.StateManager);

                outputReliableLog = new DelayedReliableLog(outputReliableLog);
                var outputMessageProcessor = MessageProcessor <OutputMessage> .Create(
                    setting,
                    outputReliableLog,
                    nextOutputReliableLog ?? outputReliableLog,
                    outputMessageFilteringEngine,
                    resultReporter);

                this.components.Add(outputMessageFilteringEngine);
                this.components.Add(outputReliableLog);
                this.components.Add(outputMessageProcessor);

                nextOutputReliableLog = outputReliableLog;
            }

            // Instant Queue
            var inputReliableLog = ReliableLog <InputMessage> .Create(partitionSetting.InstantQueueSetting, this.StateManager);

            var inputMessageProcessor = MessageProcessor <InputMessage> .Create(
                partitionSetting.InstantQueueSetting,
                inputReliableLog,
                nextOutputReliableLog,
                inputMessageFilteringEngine,
                resultReporter);

            this.components.Add(inputMessageFilteringEngine);
            this.components.Add(inputReliableLog);
            this.components.Add(inputMessageProcessor);
            this.components.Add(resultReporter);

            this.inputReliableLog = inputReliableLog;
            this.resultReporter   = resultReporter;

            MessageDispatcher.AppName = context.CodePackageActivationContext.ApplicationTypeName;
        }
Esempio n. 13
0
 protected InputMessageFilteringEngine(
     DispatcherQueueSetting setting,
     IResultReporter resultReporter)
     : base(nameof(InputMessageFilteringEngine))
 {
     this.setting        = setting;
     this.resultReporter = resultReporter;
     this.proxyFactory   = new ServiceProxyFactory((c) =>
     {
         return(new FabricTransportServiceRemotingClientFactory(
                    serializationProvider: new ServiceRemotingJsonSerializationProvider()));
     });
 }
Esempio n. 14
0
 protected PushWorker(
     DispatcherQueueSetting setting,
     IReliableLog <OutputMessage> outputMessageQueue,
     IMessageDispatcher messageDispatcher,
     IResultReporter resultReporter)
     : base(nameof(PushWorker))
 {
     this.setting                 = setting;
     this.outputMessageQueue      = outputMessageQueue;
     this.messageDispatcher       = messageDispatcher;
     this.pushTaskAvailableSignal = new AsyncSignal(SignalWaitTime);
     this.messageQueue            = new ConcurrentQueue <PushTaskInfo>();
     this.resultReporter          = resultReporter;
 }
Esempio n. 15
0
 public static IMessageProcessor <TMessage> Create(
     DispatcherQueueSetting setting,
     IReliableLog <TMessage> inputMessageQueue,
     IReliableLog <OutputMessage> outputMessageQueue,
     IMessageFilteringEngine <TMessage> filteringEngine,
     IResultReporter resultReporter)
 {
     return(new MessageProcessor <TMessage>(
                setting,
                inputMessageQueue,
                outputMessageQueue,
                filteringEngine,
                resultReporter));
 }
Esempio n. 16
0
 public TurtleGame(IBoardController boardController, ISequenceController sequenceController, IResultReporter resultReporter)
 {
     _boardController    = boardController ?? throw new System.ArgumentNullException(nameof(boardController));
     _sequenceController = sequenceController ?? throw new System.ArgumentNullException(nameof(sequenceController));
     _resultReporter     = resultReporter ?? throw new System.ArgumentNullException(nameof(resultReporter));
 }