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);
            }
        }
Esempio n. 3
0
 public static InputMessageFilteringEngine Create(
     DispatcherQueueSetting dispatcherQueueSetting,
     IResultReporter resultReporter)
 {
     return(new InputMessageFilteringEngine(
                dispatcherQueueSetting,
                resultReporter));
 }
Esempio n. 4
0
 public static IMessageDispatcher Create(
     DispatcherQueueSetting setting,
     IReliableLog <OutputMessage> outputMessageQueue,
     IResultReporter resultReporter)
 {
     return(new MessageDispatcher(
                setting,
                outputMessageQueue,
                resultReporter));
 }
Esempio n. 5
0
 public static OutputMessageFilteringEngine Create(
     DispatcherQueueSetting dispatcherQueueSetting,
     IMessageFilteringEngine <InputMessage> inputMessageFilteringEngine,
     IResultReporter resultReporter)
 {
     return(new OutputMessageFilteringEngine(
                dispatcherQueueSetting,
                inputMessageFilteringEngine,
                resultReporter));
 }
Esempio n. 6
0
 protected OutputMessageFilteringEngine(
     DispatcherQueueSetting setting,
     IMessageFilteringEngine <InputMessage> inputMessageFilteringEngine,
     IResultReporter resultReporter)
     : base(nameof(OutputMessageFilteringEngine))
 {
     this.setting = setting;
     this.inputMessageFilteringEngine = inputMessageFilteringEngine;
     this.resultReporter = resultReporter;
 }
Esempio n. 7
0
 public static IMessagePump Create(
     DispatcherQueueSetting setting,
     IReliableLog <TMessage> messageQueue,
     IMessageFilteringEngine <TMessage> filteringEngine,
     IMessageDispatcher messageDispatcher)
 {
     return(new MessagePump <TMessage>(
                setting,
                messageQueue,
                filteringEngine,
                messageDispatcher));
 }
Esempio n. 8
0
 protected MessagePump(
     DispatcherQueueSetting setting,
     IReliableLog <TMessage> messageQueue,
     IMessageFilteringEngine <TMessage> filteringEngine,
     IMessageDispatcher messageDispatcher)
     : base(nameof(MessagePump <TMessage>))
 {
     this.setting           = setting;
     this.messageQueue      = messageQueue;
     this.filteringEngine   = filteringEngine;
     this.messageDispatcher = messageDispatcher;
     this.checkpointQueue   = new ConcurrentQueue <CheckpointInfo>();
 }
Esempio n. 9
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. 10
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. 11
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. 12
0
        public ReliableLog(
            DispatcherQueueSetting setting,
            IReliableStateManager stateManager)
            : base(nameof(ReliableLog <TMessage>))
        {
            this.setting                   = setting;
            this.stateManager              = stateManager;
            this.maxQueueLength            = setting.MaxQueueLength;
            this.recordDictionaryKeyName   = this.setting.Name + ":RecordDictionary";
            this.metaDictionaryKeyName     = this.setting.Name + ":MetaDictionary";
            this.lastCommittedIndexKeyName = this.setting.Name + ":LastCommit";
            this.checkpointKeyName         = this.setting.Name + ":Checkpoint";

            this.lastIndex       = this.lastCommittedIndex = this.currentCheckpointIndex = new RecordInfo(RecordInfo.InvalidIndex, this.maxQueueLength);
            this.inflightAppends = new List <CommitInfo>();
            this.waiter          = new AsyncWaiter();
        }
Esempio n. 13
0
 public static IReliableLog <TMessage> Create(DispatcherQueueSetting setting, IReliableStateManager stateManager)
 {
     return(new ReliableLog <TMessage>(setting, stateManager));
 }