Пример #1
0
        public void Setup()
        {
            void Increment(string message)
            {
            }

            _hubSinglePublisherSingleSubscriber.Subscribe <string>(Increment);
            _hubSinglePublisherSingleSubscriberSimple.Subscribe <string>(Increment);


            void IncrementMultiple(int msg)
            {
            }

            _hubSinglePublisherMultipleSubscriber.Subscribe <int>(IncrementMultiple);
            _hubSinglePublisherMultipleSubscriber.Subscribe <int>(IncrementMultiple);
            _hubSinglePublisherMultipleSubscriber.Subscribe <int>(IncrementMultiple);
            _hubSinglePublisherMultipleSubscriberSimple.Subscribe <int>(IncrementMultiple);
            _hubSinglePublisherMultipleSubscriberSimple.Subscribe <int>(IncrementMultiple);
            _hubSinglePublisherMultipleSubscriberSimple.Subscribe <int>(IncrementMultiple);

            _hubMultiplePublisherSingleSubscriber.Subscribe <string>(Increment);
            _hubMultiplePublisherSingleSubscriberSimple.Subscribe <string>(Increment);

            _hubMultiplePublisherSingleSubscriberAndGlobalAuditHandler.RegisterGlobalHandler((type, msg) => { });
            _hubMultiplePublisherSingleSubscriberAndGlobalAuditHandlerSimple.RegisterGlobalHandler((type, msg) => { });

            _hubMultiplePublisherSingleSubscriberAndGlobalAuditHandler.Subscribe <string>(x => { });
            _hubMultiplePublisherSingleSubscriberAndGlobalAuditHandlerSimple.Subscribe <string>(x => { });
        }
        /// <inheritdoc />
        public Task StartAsync(CancellationToken cancellationToken)
        {
            // Subscribe to event aggregator
            _messageHubSubscriptions.Add(_messageHub.Subscribe <RequestSyncEvent>((e) => HandleGoogleRequestSync(e)));
            _messageHubSubscriptions.Add(_messageHub.Subscribe <ReportStateEvent>((e) => HandleGoogleReportState(e)));

            return(Task.CompletedTask);
        }
        /// <inheritdoc />
        protected override Task StartServiceAsync(CancellationToken cancellationToken)
        {
            // Subscribe to event aggregator
            _messageHubSubscriptions.Add(_messageHub.Subscribe <Command>((e) => HandleGoogleHomeCommand(e)));
            _messageHubSubscriptions.Add(_messageHub.Subscribe <ConfigSubscriptionChangeEvent>((e) => HandleConfigSubscriptionChange(e)));

            return(Task.CompletedTask);
        }
 public IndexViewModel(IMessageHub eventAggregator, ITicketRepository ticketRepository)
 {
     _eventAggregator             = eventAggregator;
     _ticketRepository            = ticketRepository;
     _ticketScanAddedSubscription = _eventAggregator.Subscribe <TicketScanAdded>(
         message => OnPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TicketScans))));
     _ticketScanUpdatedSubscription = _eventAggregator.Subscribe <TicketScanUpdated>(
         message => OnPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TicketScans))));
 }
Пример #5
0
        public StatePresenter(IStateView stateView, IMessageHub aggregator, IGame game)
        {
            _stateView             = stateView;
            _stateView.SunClicked += OnSunClicked;

            _game = game;

            _aggregator = aggregator;
            _aggregator.Subscribe <GameFinishedMessage>(m => OnGameFinished(m.Game));
            _aggregator.Subscribe <FlaggedCountChangedMessage>(m => OnFlaggedCountChanged(m.Game));
        }
Пример #6
0
        public UserSynchronizationServiceLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <UserSynchronizationService>();

            messageHub.Subscribe <UserSynchronizationServiceStart>(message => logger.LogInformation($"Started {message.UserType} user synchronization{(Logging.LogDestination == LogDestinations.Console ? $" {DateTimeOffset.Now:yyyy-MM-dd hh:mm:ss}" : string.Empty)}"));

            messageHub.Subscribe <UsersAcquired>(message => logger.LogInformation($"Synchronizing {message.Count} {message.UserType} Users"));

            messageHub.Subscribe <UserSynchronizationServiceException>(message => message.Exceptions.ToList().ForEach(exception => logger.LogError(exception, $"{message.UserType} User Synchronization Exception")));

            messageHub.Subscribe <UserSynchronizationServiceEnd>(message => logger.LogInformation($"Finished {message.UserType} user synchronization{(Logging.LogDestination == LogDestinations.Console ? $" {DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss}" : string.Empty)}"));
        }
Пример #7
0
        /// <summary>
        /// Uses the creator to create a component, and then add that component to the list.
        /// </summary>
        /// <param name="creator"> The specific component creator. </param>
        /// <param name="fileName"> The filename (location) that the component uses to read from. </param>
        /// <returns></returns>
        public bool RegisterComponent(IComponentCreator creator, string fileName)
        {
            var response = false;

            // Contract requirements.
            if (creator != null && !string.IsNullOrWhiteSpace(fileName))
            {
                var component = creator.CreateComponent(Hub, fileName);
                Hub.Subscribe <string>(async(s) => await component.Processor.ProcessAsync(fileName).ConfigureAwait(false));
                Components.Add(component);
                response = true;
            }

            return(response);
        }
        public MessageTypeSwitchService(ILogger log, IMessageHub hub)
        {
            _logger     = log;
            _messageHub = hub;

            _token = _messageHub.Subscribe <Message>(OnMessageReceivedEvent);
        }
Пример #9
0
        public override void EndInit()
        {
            base.EndInit();

            if (Inventory.ColumnDefinitions.Count > 0 && Inventory.RowDefinitions.Count > 0)
            {
                for (int y = 0; y < Inventory.ColumnDefinitions.Count; y++)
                {
                    for (int x = 0; x < Inventory.RowDefinitions.Count; x++)
                    {
                        Border border = new Border
                        {
                            Background      = Brushes.LightGray,
                            BorderBrush     = Brushes.Black,
                            BorderThickness = new Thickness(0.75),
                            Width           = CellWidth,
                            Height          = CellHeight,
                        };
                        Grid.SetColumn(border, y);
                        Grid.SetRow(border, x);
                        Inventory.Children.Add(border);
                    }
                }

                hub = MessageHub;
                subscriptionToken = hub.Subscribe <ItemPositionUpdate>(ItemPositionUpdate);

                AddItem(0, 0, 0, "https://www.clipartmax.com/png/full/414-4147920_bow-arrow-symbol-vector-icon-illustration-triangle.png", isStackable: true, quantity: 5);
                AddItem(1, 1, 0, "https://icons.iconarchive.com/icons/chanut/role-playing/256/Sword-icon.png", spanY: 2);
                AddItem(2, 0, 2, "https://icons.iconarchive.com/icons/google/noto-emoji-objects/128/62967-shield-icon.png", spanY: 3, spanX: 3);
            }
        }
Пример #10
0
        public MovementService(ILogger log, IMessageHub hub)
        {
            _logger     = log;
            _messageHub = hub;

            _token = _messageHub.Subscribe <MovementMessage>(OnMovementReceivedEvent);
        }
Пример #11
0
 public TimingSession(Id <TimingSessionDto> id,
                      IEventRepository eventRepository,
                      IRecordingService recordingService, IRecordingServiceRepository recordingServiceRepository,
                      IAutoMapperProvider autoMapper,
                      IMessageHub messageHub, ISystemClock clock)
 {
     this.Id = id;
     this.eventRepository            = eventRepository;
     this.recordingService           = recordingService;
     this.recordingServiceRepository = recordingServiceRepository;
     this.autoMapper = autoMapper;
     this.messageHub = messageHub;
     this.clock      = clock;
     messageHub.Subscribe <UpstreamDataSyncComplete>(_ => Reload());
     messageHub.Subscribe <StorageUpdated>(x => Reload(false, x));
 }
Пример #12
0
        public ActionService(ILogger log, IMessageHub hub)
        {
            _logger     = log;
            _messageHub = hub;

            _token = _messageHub.Subscribe <ActionMessage>(OnActionReceivedEvent);
        }
Пример #13
0
        public ReaderWriter(INode creator,
                            IMessageHub messageHub,
                            IEnumerable <IConfiguration> configMap,
                            IMessageSerializer serializer)
        {
            var configurations = configMap.ToDictionary(c => c.Key, c => c);

            this.serializer = serializer;
            op = new CurrentOperation
            {
                Phase            = new ObservableAtomicValue <OperationPhase>(OperationPhase.Idle),
                Type             = new ObservableAtomicValue <OperationType>(OperationType.Idle),
                Accepted         = new ObservableConcurrentDictionary <int, INode>(Enumerable.Empty <KeyValuePair <int, INode> >()),
                ConfigurationMap = new ObservableConcurrentDictionary <IConfigurationIndex, IConfiguration>(configurations)
            };
            gc = new GarbageCollectionOperation {
                Phase = new ObservableAtomicValue <OperationPhase>(OperationPhase.Idle)
            };
            this.creator    = creator;
            this.configMap  = new ObservableConcurrentDictionary <IConfigurationIndex, IConfiguration>(configurations);
            this.messageHub = messageHub;
            value           = new ObjectValue {
                Value = 0
            };
            tag            = new Tag(creator);
            localPhase     = new PhaseNumber();
            operationQueue = new BlockingCollection <OperationRequest>(new ConcurrentQueue <OperationRequest>());
            eventHandlers  = new EventHandlerList();
            status         = new ObservableAtomicValue <NodeStatus>(NodeStatus.Idle);
            world          = new ObservableConcurrentDictionary <int, INode>();
            phaseVector    = new ObservableConcurrentDictionary <INode, IPhaseNumber>();

            preJoinAck  = new ObservableCondition(() => status.Get() == NodeStatus.Active, new[] { status });
            preOutSend  = new ObservableCondition(() => status.Get() == NodeStatus.Active, new[] { status });
            preQueryFix = new ObservableCondition(QueryFixCondition,
                                                  new IChangeNotifiable[] { status, op.Type, op.Phase, op.Accepted, op.ConfigurationMap });
            prePropagationFix = new ObservableCondition(PropagationFixCondition,
                                                        new IChangeNotifiable[] { status, op.Type, op.Phase, op.Accepted, op.ConfigurationMap });
            preReadAck = new ObservableCondition(() => status.Get() == NodeStatus.Active &&
                                                 op.Type.Get() == OperationType.Read &&
                                                 op.Phase.Get() == OperationPhase.Done,
                                                 new IChangeNotifiable[] { status, op.Type, op.Phase });
            preWriteAck = new ObservableCondition(() => status.Get() == NodeStatus.Active &&
                                                  op.Type.Get() == OperationType.Write &&
                                                  op.Phase.Get() == OperationPhase.Done,
                                                  new IChangeNotifiable[] { status, op.Type, op.Phase });
            new Thread(ProcessReadWriteRequests).Start();
            new Thread(OutJoinAck).Start();
            new Thread(OutSend).Start();
            new Thread(IntQueryFix).Start();
            new Thread(IntPropagationFix).Start();
            new Thread(OutReadAck).Start();
            new Thread(OutWriteAck).Start();
            var listener = messageHub.Subscribe(creator);

            listener.Where(m => m.Body.MessageType.ToMessageType() == MessageTypes.JoinRw)
            .Subscribe(new MessageStreamListener(OnJoinReceived));
            listener.Where(m => m.Body.MessageType.ToMessageType() == MessageTypes.Gossip)
            .Subscribe(new MessageStreamListener(OnGossipReceived));
        }
Пример #14
0
        public SubthemeSynchronizerLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <SubthemeSynchronizer>();

            messageHub.Subscribe <SubthemeSynchronizerStart>(_ =>
            {
                _subthemeIndex            = 0;
                _subthemeProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Started subtheme synchronizer");
                }
            });

            messageHub.Subscribe <SubthemesAcquired>(message =>
            {
                _subthemeIndex = 0;
                _subthemeCount = message.Count;

                logger.LogInformation($"Acquired {message.Count} subthemes to process for theme '{message.Theme}'");
            });

            messageHub.Subscribe <SynchronizingSubthemeStart>(message =>
            {
                _subthemeIndex++;
                _subthemeProgressFraction = _subthemeIndex / _subthemeCount;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation(Invariant($"Started synchronizing subtheme '{message.Theme}-{message.Subtheme}': index {_subthemeIndex}, progress {_subthemeProgressFraction:##0.00%}"));
                }
            });

            messageHub.Subscribe <SynchronizingSubthemeException>(message => logger.LogError(message.Exception, $"Synchronizing Subtheme '{message.Theme}-{message.Subtheme}' Exception"));

            messageHub.Subscribe <SynchronizingSubthemeEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished synchronizing subtheme '{message.Theme}-{message.Subtheme}'");
                }
            });

            messageHub.Subscribe <SubthemeSynchronizerException>(message => logger.LogError(message.Exception, $"Subtheme Synchronizer Exception for theme '{message.Theme}'"));

            messageHub.Subscribe <SubthemeSynchronizerEnd>(_ =>
            {
                _subthemeIndex            = 0;
                _subthemeProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Finished subtheme synchronizer");
                }
            });
        }
Пример #15
0
        public FieldPresenter(IFieldView fieldView, IGame game, IMessageHub aggregator)
        {
            _game = game;

            _fieldView                 = fieldView;
            _fieldView.CellClick      += OnCellClick;
            _fieldView.FieldMouseDown += OnFieldMouseDown;
            _fieldView.RenderField(_game.Minefield);

            _aggregator = aggregator;
            _aggregator.Subscribe <GameStartedMessage>(m => OnGameStarted(m.Game));
        }
Пример #16
0
 public RfidService(StorageService storageService, IMessageHub messageHub,
                    ISystemClock systemClock, IMapper mapper)
 {
     this.storageService = storageService;
     this.messageHub     = messageHub;
     this.systemClock    = systemClock;
     this.mapper         = mapper;
     messageHub.Subscribe <RfidOptions>(RfidOptionsChanged);
     factory = new UniversalTagStreamFactory();
     factory.UseAlienProtocol();
     factory.UseSerialProtocol();
     RfidOptionsChanged(storageService.GetRfidOptions());
 }
        public AssetUncompressionLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <AssetUncompression>();

            messageHub.Subscribe <ReaderExtractionEventArgs <IEntry> >(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Uncompressing {message.Item.Key}: {message.ReaderProgress.PercentageRead}%");
                }
            });
        }
Пример #18
0
        private static void Bootstrap()
        {
            IKernel kernel = new StandardKernel();

            //Perform binding here
            //See https://github.com/ninject/Ninject/wiki/Dependency-Injection-With-Ninject for help
            //Hint: You may need to use Bind<A, B>() depending on your implementation
            //Hint: You may need .InSingletonScope()
            kernel.Bind <IMessageHub>().To <MessageHub>().InSingletonScope();
            kernel.Bind <IElevatorStatus>().To <ElevatorStatus>().InSingletonScope();
            kernel.Bind <IElevatorControls>().To <ElevatorControls>().InSingletonScope();

            messageHub       = kernel.Get <IMessageHub>();
            elevatorControls = kernel.Get <IElevatorControls>();

            messageHub.Subscribe <FloorChangedMessage>(ElevatorStatusOnFloorChanged);
        }
Пример #19
0
        public VolumeSpikesDetector(IMessageHub messageHub,
                                    IOptions <AppSettings> appSettings,
                                    ISymbolService symbolService,
                                    ILastTradesService lastTradesService,
                                    IVolumeRecordService volumeRecordService,
                                    ILogger <VolumeSpikesDetector> logger)
        {
            _logger              = logger;
            _appSettings         = appSettings;
            _symbolService       = symbolService;
            _lastTradesService   = lastTradesService;
            _volumeRecordService = volumeRecordService;

            LoadSymbols();

            messageHub.Subscribe <IList <StreamingMessage> >(HandleMessages);
        }
Пример #20
0
        public SetSynchronizationServiceLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <SetSynchronizationService>();

            messageHub.Subscribe <SetSynchronizationServiceStart>(_ => logger.LogInformation($"Started set synchronization{(Logging.LogDestination == LogDestinations.Console ? $" {DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss}" : string.Empty)}"));

            messageHub.Subscribe <InsightsAcquired>(message => logger.LogInformation($"Last Updated: {(message.SynchronizationTimestamp.HasValue ? message.SynchronizationTimestamp.Value.ToString("yyyy-MM-dd HH:mm:ss") : "Never")}"));

            messageHub.Subscribe <ProcessingThemeStart>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started processing theme: {message.Name}");
                }
            });

            messageHub.Subscribe <ProcessingSubthemeStart>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started processing subtheme: {message.Name}");
                }
            });

            messageHub.Subscribe <ProcessingSubthemeEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished processing subtheme: {message.Name}");
                }
            });

            messageHub.Subscribe <ProcessingThemeException>(message => logger.LogError(message.Exception, $"Processing Theme '{message.Name}' Exception"));

            messageHub.Subscribe <ProcessingThemeEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished processing theme: {message.Name}");
                }
            });

            messageHub.Subscribe <SetSynchronizationServiceException>(message => logger.LogError(message.Exception, "Set Synchronization Exception"));

            messageHub.Subscribe <SetSynchronizationServiceEnd>(_ => logger.LogInformation($"Finished set synchronization{(Logging.LogDestination == LogDestinations.Console ? $" {DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss}" : string.Empty)}"));
        }
Пример #21
0
        public UnshelveViewModel(
            [NotNull] string directoryPath,
            [NotNull] GitInfo gitInfo,
            [NotNull] TfsInfo tfsInfo,
            [NotNull] IMessageHub messageHub,
            [NotNull] IGitUtility gitUtility,
            [NotNull] ICmdUtility cmdUtility,
            [NotNull] IGitTfsUtility gitTfsUtility,
            [NotNull] ITfsUtility tfsUtility,
            [NotNull] SynchronizationContext synchronizationContext,
            [NotNull] Func <string, bool, ConfirmationViewModel> confirmationViewModelFactory,
            [NotNull] Func <ConfirmationViewModel, IConfirmationWindow> confirmationWindowFactory,
            [NotNull] ICommandManager commandManager,
            [NotNull] IRateLimiter rateLimiter)
            : base(commandManager)
        {
            _messageHub                   = messageHub ?? throw new ArgumentNullException(nameof(messageHub));
            _gitUtility                   = gitUtility ?? throw new ArgumentNullException(nameof(gitUtility));
            _cmdUtility                   = cmdUtility ?? throw new ArgumentNullException(nameof(cmdUtility));
            _gitTfsUtility                = gitTfsUtility ?? throw new ArgumentNullException(nameof(gitTfsUtility));
            _tfsUtility                   = tfsUtility ?? throw new ArgumentNullException(nameof(tfsUtility));
            _synchronizationContext       = synchronizationContext ?? throw new ArgumentNullException(nameof(synchronizationContext));
            _confirmationViewModelFactory = confirmationViewModelFactory ?? throw new ArgumentNullException(nameof(confirmationViewModelFactory));
            _confirmationWindowFactory    = confirmationWindowFactory ?? throw new ArgumentNullException(nameof(confirmationWindowFactory));
            _rateLimiter                  = rateLimiter ?? throw new ArgumentNullException(nameof(rateLimiter));
            _gitInfo       = gitInfo ?? throw new ArgumentNullException(nameof(gitInfo));
            _tfsInfo       = tfsInfo ?? throw new ArgumentNullException(nameof(tfsInfo));
            _directoryPath = directoryPath ?? throw new ArgumentNullException(nameof(directoryPath));

            UnshelveCommand = AddCommand(Unshelve, () => CanExecute);
            CancelCommand   = AddCommand(Cancel, () => !IsLoading);
            OpenShelvesetInBrowserCommand   = AddCommand(OpenShelvesetInBrowser, () => ShelvesetName != null);
            CopyShelvesetToClipboardCommand = AddCommand(CopyShelvesetToClipboard, () => ShelvesetName != null);

            if (User == null)
            {
                UsersSearchPattern = string.Empty; // sets current user
            }

            _messageHub.Publish(DialogType.Unshelve);
            _subscriptionTokens.Add(messageHub.Subscribe <TaskState>(OnTaskAction));
        }
        public void RetrieveTicketScan(string identifier)
        {
            if (!(_identifier is null))
            {
                throw new InvalidOperationException("Already retrieved ticket scan");
            }

            if (identifier is null)
            {
                throw new ArgumentNullException(nameof(identifier), "Identifier cannot be null");
            }

            _identifier = identifier;

            if (Result?.Status == TicketScanStatus.Started)
            {
                _ticketScanUpdatedSubscription = _eventAggregator.Subscribe <TicketScanUpdated>(
                    message => OnPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Message))));
            }
        }
Пример #23
0
        public ThumbnailSynchronizerLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <ThumbnailSynchronizer>();

            messageHub.Subscribe <ThumbnailSynchronizerStart>(_ =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Started thumbnail synchronizer");
                }
            });

            messageHub.Subscribe <ThumbnailAcquired>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Acquired thumbnail '{message.Thumbnail}' to process");
                }
            });

            messageHub.Subscribe <SynchronizingThumbnailStart>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started synchronizing thumbnail '{message.Thumbnail}'");
                }
            });

            messageHub.Subscribe <SynchronizingThumbnailEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished synchronizing thumbnail '{message.Thumbnail}'");
                }
            });

            messageHub.Subscribe <ThumbnailSynchronizerException>(message => logger.LogError(message.Exception, "Thumbnail Synchronizer Exception"));

            messageHub.Subscribe <ThumbnailSynchronizerEnd>(_ =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Finished thumbnail synchronizer");
                }
            });
        }
Пример #24
0
        public ShelveViewModel(
            [NotNull] string directoryPath,
            [NotNull] GitInfo gitInfo,
            [NotNull] TfsInfo tfsInfo,
            [NotNull] IMessageHub messageHub,
            [NotNull] IGitUtility gitUtility,
            [NotNull] ICmdUtility cmdUtility,
            [NotNull] IGitTfsUtility gitTfsUtility,
            [NotNull] ITfsUtility tfsUtility,
            [NotNull] SynchronizationContext synchronizationContext,
            [NotNull] Func <string, bool, ConfirmationViewModel> confirmationViewModelFactory,
            [NotNull] Func <ConfirmationViewModel, IConfirmationWindow> confirmationWindowFactory,
            [NotNull] ICommandManager commandManager)
            : base(commandManager)
        {
            _messageHub                   = messageHub ?? throw new ArgumentNullException(nameof(messageHub));
            _gitUtility                   = gitUtility ?? throw new ArgumentNullException(nameof(gitUtility));
            _cmdUtility                   = cmdUtility ?? throw new ArgumentNullException(nameof(cmdUtility));
            _gitTfsUtility                = gitTfsUtility ?? throw new ArgumentNullException(nameof(gitTfsUtility));
            _tfsUtility                   = tfsUtility ?? throw new ArgumentNullException(nameof(tfsUtility));
            _synchronizationContext       = synchronizationContext ?? throw new ArgumentNullException(nameof(synchronizationContext));
            _confirmationViewModelFactory = confirmationViewModelFactory ?? throw new ArgumentNullException(nameof(confirmationViewModelFactory));
            _confirmationWindowFactory    = confirmationWindowFactory ?? throw new ArgumentNullException(nameof(confirmationWindowFactory));
            _gitInfo       = gitInfo ?? throw new ArgumentNullException(nameof(gitInfo));
            _tfsInfo       = tfsInfo ?? throw new ArgumentNullException(nameof(tfsInfo));
            _directoryPath = directoryPath ?? throw new ArgumentNullException(nameof(directoryPath));

            ShelveOrCheckinCommand = AddCommand(ShelveOrCheckin, () => CanExecute);
            CancelCommand          = AddCommand(Cancel, () => !IsLoading);

            IsDirty        = CommitDirty = _gitInfo.IsDirty;
            ShelvesetName  = GetShelvesetName();
            CommitMessage  = _gitInfo.CommitMessage ?? string.Empty;
            CommitMessages = _gitInfo.CommitMessages;
            _messageHub.Publish(DialogType.Shelve);
            _subscriptionTokens.Add(messageHub.Subscribe <TaskState>(OnTaskAction));
        }
Пример #25
0
        public UserSynchronizerLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <UserSynchronizer>();

            messageHub.Subscribe <UserSynchronizerStart>(message =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started user synchronizer for {message.UserType} user '{message.Username}'");
                }
            });

            messageHub.Subscribe <AllMyBricksToBricksetStart>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Started update of Brickset.com with changes made in All My Bricks");
                }
            });

            messageHub.Subscribe <AllMyBricksToBricksetAcquiringSetsStart>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Acquiring All My Bricks user sets to update in Brickset.com");
                }
            });

            messageHub.Subscribe <AllMyBricksToBricksetAcquiringSetsEnd>(message =>
            {
                _setCount = message.Count;
                _setIndex = 0;

                logger.LogInformation($"Acquired {message.Count} All My Bricks user sets to update in Brickset.com");
            });

            messageHub.Subscribe <UserSynchronizerSynchronizingSetStart>(message =>
            {
                _setIndex++;
                _setProgressFraction = _setIndex / _setCount;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started synchronizing set {message.SetId}: index {_setIndex}, progress {_setProgressFraction:##0.00%}");
                }
            });

            messageHub.Subscribe <UserSynchronizerSynchronizingSetEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished synchronizing set {message.SetId}");
                }
            });

            messageHub.Subscribe <AllMyBricksToBricksetEnd>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Finished update of Brickset.com with changes made in All My Bricks");
                }
            });

            messageHub.Subscribe <BricksetToAllMyBricksStart>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Started adding Brickset.com user sets missing in All My Bricks");
                }
            });

            messageHub.Subscribe <BricksetToAllMyBricksAcquiringSetsStart>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Acquiring Brickset.com user sets missing in All My Bricks");
                }
            });

            messageHub.Subscribe <BricksetToAllMyBricksAcquiringSetsEnd>(message =>
            {
                _setCount = message.Count;
                _setIndex = 0;

                logger.LogInformation($"Acquired {message.Count} user sets from Brickset.com missing in All My Bricks");
            });

            messageHub.Subscribe <BricksetToAllMyBricksEnd>(_ =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation("Finished adding Brickset.com user sets missing in All My Bricks");
                }
            });

            messageHub.Subscribe <UserSynchronizerException>(message => logger.LogError(message.Exception, $"Synchronizing {message.UserType} User '{message.Username}' Exception"));

            messageHub.Subscribe <UserSynchronizerEnd>(message =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished user synchronizer for {message.UserType} user '{message.Username}'");
                }
            });
        }
 public Sut(IMessageHub MessageHub)
 {
     MessageHub.Subscribe <RefreshMessage>("Refresh", RefreshMethod);
     MessageHub.Subscribe <CancelMessage>("Cancel", CancelMethod);
 }
Пример #27
0
        public SetSynchronizerLogger(
            ILoggerFactory loggerFactory,
            IMessageHub messageHub)
        {
            var logger = loggerFactory.CreateLogger <SetSynchronizer>();

            messageHub.Subscribe <SetSynchronizerStart>(message =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Started set synchronizer{(message.ForSubtheme ? " for subtheme" : string.Empty)}");
                }
            });

            messageHub.Subscribe <AcquiringSetsStart>(message =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Acquiring sets from '{message.Theme}-{message.Subtheme}' to process for year {message.Year}");
                }
            });

            messageHub.Subscribe <AcquiringSetsEnd>(message =>
            {
                _setCount = message.Count;
                _setIndex = 0;

                logger.LogInformation($"Acquired {message.Count} sets {(message.Year.HasValue ? $"from '{message.Theme}-{message.Subtheme}' " : string.Empty)}to process{(message.Year.HasValue ? $" for year {message.Year}" : string.Empty)}");
            });

            messageHub.Subscribe <SynchronizingSetStart>(message =>
            {
                _setIndex++;
                _setProgressFraction = _setIndex / _setCount;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation(Invariant($"Started synchronizing set '{message.IdentifierLong}': index {_setIndex}, progress {_setProgressFraction:##0.00%}"));
                }
            });

            messageHub.Subscribe <SynchronizingSetException>(message => logger.LogError(message.Exception, $"Synchronizing Set '{message.IdentifierLong}' Exception"));

            messageHub.Subscribe <SynchronizingSetEnd>(message =>
            {
                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished synchronizing set '{message.IdentifierLong}'");
                }
            });

            messageHub.Subscribe <SetSynchronizerException>(message => logger.LogError(message.Exception, "Set Synchronizer Exception"));

            messageHub.Subscribe <SetSynchronizerEnd>(message =>
            {
                _setIndex            = 0;
                _setProgressFraction = 0;

                if (Logging.LogVerbosity == LogVerbosity.FullLogging)
                {
                    logger.LogInformation($"Finished set synchronizer{(message.ForSubtheme ? " for subtheme" : string.Empty)}");
                }
            });
        }
Пример #28
0
 private void SubscribeToEvents()
 {
     _eventAggregator.Subscribe <ViewClosedEvent>(ViewClosed);
 }
Пример #29
0
        public static IDisposable SubscribeDisposable <T>(this IMessageHub messageHub, Action <T> action)
        {
            var subId = messageHub.Subscribe(action);

            return(Disposable.Create(() => messageHub.Unsubscribe(subId)));
        }
Пример #30
0
 public Guid AddListener <T>(Action <T> listener)
 {
     return(_hub.Subscribe <T>(listener));
 }