Esempio n. 1
0
        public MainWindow()
        {
            InitializeComponent();

            // Use this as construction root for simplicity.
            // In real world app there should be good framework for this and this should be done
            // outside of main window for reason that then mainwindow is interchangeable too if required.
            var dataSource = new InMemoryRepository();

            // Dummy data for testing...
            dataSource.Add(new CarImage {Color="Black", RegisterPlate = "ABC-123", Speed = 140});

            var messenger = new MessageAggregator();
            var reportViewModel = new ReportViewModel(dataSource, messenger);
            var colorFilter = new ColorFilterViewModel();
            var filterViewModel = new FiltersViewModel(new List<IFilter> {colorFilter}, messenger);

            // Just for testing, apply dummy filter so that data is shown.
            messenger.Publish(new Messages.FiltersAppliedMessage());

            DataContext = new
            {
                Report = reportViewModel,
                Filters = filterViewModel
            };
        }
Esempio n. 2
0
		protected override void Configure()
		{
			_container = new CompositionContainer(new AggregateCatalog(AssemblySource
					.Instance
					.Select(x => new AssemblyCatalog(x))
					.OfType<ComposablePartCatalog>()
				)
			);

			var batch = new CompositionBatch();
			
			_portName = SerialPort.GetPortNames()[0];
			_ecr = new Dp25(_portName);

			var messenger = new MessageAggregator();

			messenger.GetStream<SelectedPortChangedEvent>()
					.Subscribe(e => _ecr.ChangePort(e.PortName));



			batch.AddExportedValue<IWindowManager>(new WindowManager());
			batch.AddExportedValue<IMessageAggregator>(messenger);
			batch.AddExportedValue<Dp25>(_ecr);
			batch.AddExportedValue(_container);

			_container.Compose(batch);
		}
        public void RegisterWithSingleConsumer_WorksTogether()
        {
            string message = "Not set";
            var messenger = new MessageAggregator();
            messenger.Subscribe<TestMessage>(m => message = m.ExampleMessage);

            messenger.Publish(new TestMessage {ExampleMessage = "Message example."});

            message.Should().Be("Message example.");
        }
Esempio n. 4
0
        public ReportViewModel(IRepository dataSource, MessageAggregator messegenger)
        {
            Null.CheckArgument(() => dataSource);
            Null.CheckArgument(() => messegenger);

            _dataSource = dataSource;
            CarImages = new ObservableCollection<CarImage>();

            messegenger.Subscribe<FiltersAppliedMessage>(UpdateData);
        }
Esempio n. 5
0
        public async Task A_valid_subscriber_is_assigned_as_a_handler_for_its_message_type()
        {
            var dispatcher      = Substitute.For <IDispatcher>();
            var handlerStub     = Substitute.For <IHandleAsync <object> >();
            var eventAggregator = new MessageAggregator();

            Assert.False(eventAggregator.HandlerExistsFor(typeof(object)));

            await eventAggregator.SubscribeAsync(handlerStub);

            Assert.True(eventAggregator.HandlerExistsFor(typeof(object)));
        }
Esempio n. 6
0
        public void AggregateSingleMessage()
        {
            bool executed = false;
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
                executed = true;
            });

            aggregator.Aggregate(new TestMessage());

            executed.Should().BeTrue("A message in the default domain should be executed immediately.");
        }
        public void Init()
        {
            _repository = TestDataTemplates.CreateRepository();
            _messenger = new MessageAggregator();
            _reportsViewModel = new ReportViewModel(_repository, _messenger);

            _colorFilter = new ColorFilterViewModel();
            _registerFilter = new RegisterPlateFilterViewModel();

            var filters = new List<IFilter> {_colorFilter, _registerFilter};

            _filtersViewModel = new FiltersViewModel(filters, _messenger);
        }
Esempio n. 8
0
        public async Task A_valid_subscriber_gets_removed_from_the_handler_list()
        {
            var dispatcher      = Substitute.For <IDispatcher>();
            var handlerStub     = Substitute.For <IHandleAsync <object> >();
            var eventAggregator = new MessageAggregator();

            await eventAggregator.SubscribeAsync(handlerStub);

            Assert.True(eventAggregator.HandlerExistsFor(typeof(object)));

            await eventAggregator.UnsubscribeAsync(handlerStub);

            Assert.False(eventAggregator.HandlerExistsFor(typeof(object)));
        }
Esempio n. 9
0
        public void Publishes_to_handler()
        {
            var aggregator = new MessageAggregator();
            var publisher  = new MessagePublisher(aggregator);

            var handled = 0;

            aggregator.Subscribe <StringMessage>(se => { handled++; });

            var sent = publisher.Publish(new StringMessage("Foo"));

            Assert.True(sent);
            Assert.Equal(1, handled);
        }
        public MainWindow(FileLogger logger)
        {
            Logger = logger;
            InitializeComponent();
            ShutDownButton.IsEnabled = false;

            EventProcessor.OnUpdatedInfo += HandleEventProcessorInfo;
            App.Engine.OnStateChanged    += HandleEngineStateChange;
            App.Engine.OnNewAnalyzerInfo += HandleAnalyzerInfo;


            Task.Run(() =>
            {
                while (true)
                {
                    MessageAggregator.Collection.Clear();
                    for (var i = 0; i < 50; ++i)
                    {
                        if (App.Engine.EngineMessages.TryDequeue(out var msg))
                        {
                            MessageAggregator.AddMessage(msg, msg.Message.GenerateMessageIdentifierFromString());
                        }
                    }
                    foreach (var messageTracker in MessageAggregator.Collection)
                    {
                        MesseageOutputQueue.Enqueue($"{messageTracker.Value.Message} | {messageTracker.Value.AmountCounter} times from {messageTracker.Value.FirstOccurrence} to {messageTracker.Value.LastOccurrence}");
                    }
                    for (int i = 1; i <= 14; ++i)
                    {
                        if (MesseageOutputQueue.TryDequeue(out string message))
                        {
                            //UpdateMessageBox($"{DateTime.UtcNow}\t{message}{Environment.NewLine}");
                            Logger.AddRow(message);
                            SnapShotGenerator.AddMessageToSnapShot(DateTime.UtcNow, message);
                        }
                    }
                }
            });

            Task.Run(() =>
            {
                while (true)
                {
                    UpdateSnapshotAnalyzerInfo();
                    Task.Delay(4000).Wait();
                }
            });
            StartUpdateSelectedAnalyzerTask();
        }
Esempio n. 11
0
        //private StatefulHttpClient _httpClient;
        protected override void Configure()
        {
            _container = new CompositionContainer(new AggregateCatalog(AssemblySource.Instance.Select(x => new AssemblyCatalog(x))));
            var batch = new CompositionBatch();
            //var statefulHttpClient = new StatefulHttpClient(new HttpClient(), new CookieContainer());
            var messageAggregator = new MessageAggregator();

            _msg = messageAggregator;
            //_httpClient = statefulHttpClient;
            //batch.AddExportedValue<INavigator>(statefulHttpClient);
            batch.AddExportedValue <IWindowManager>(new WindowManager());
            batch.AddExportedValue <IMessageAggregator>(messageAggregator);
            batch.AddExportedValue(_container);
            _container.Compose(batch);
        }
        public void WithMultipleRegisteredTypes_OnlyReactCorrectlyTypedMessage()
        {
            string firstMessage = "Not set";
            string secondMessage = "Not set";
            string doNotTouchMessage = "Should not be changed.";
            var messenger = new MessageAggregator();
            messenger.Subscribe<TestMessage>(m => firstMessage = m.ExampleMessage);
            messenger.Subscribe<TestMessage>(m => secondMessage = m.ExampleMessage);
            messenger.Subscribe<NotUsedTestMessage>(m => doNotTouchMessage = "This should not happen.");

            messenger.Publish(new TestMessage { ExampleMessage = "Message example." });

            firstMessage.Should().Be("Message example.");
            secondMessage.Should().Be("Message example.");
            doNotTouchMessage.Should().Be("Should not be changed.");
        }
Esempio n. 13
0
        public void DontExecuteMultipleMessagesIfOneIsMissing()
        {
            bool executed = false;
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
                executed = true;
            });

            TestMessage[] messages = new[] { new TestMessage(), new TestMessage(), new TestMessage() };
            MessageDomain.CreateNewDomainsFor(messages);
            aggregator.Aggregate(messages[0]);
            aggregator.Aggregate(messages[1]);

            executed.Should().BeFalse("not all messages were added to the aggregator.");
        }
Esempio n. 14
0
        public void Can_subscribe_with_manifold_hierarchical_consumer()
        {
            var aggregator = new MessageAggregator();
            var publisher  = new MessagePublisher(aggregator);

            var handler = new ManifoldHierarchicalMessageHandler();

            aggregator.Subscribe(handler);

            var sent = publisher.Publish(new InheritedMessage());

            Assert.True(sent);
            Assert.Equal(1, handler.HandledInterface);
            Assert.Equal(1, handler.HandledBase);
            Assert.Equal(1, handler.HandledInherited);
        }
Esempio n. 15
0
        public void Publishes_to_multiple_handlers()
        {
            var aggregator = new MessageAggregator();
            var publisher  = new MessagePublisher(aggregator);

            var handler1 = 0;
            var handler2 = 0;

            aggregator.Subscribe <StringMessage>(e => { handler1++; });
            aggregator.Subscribe <StringMessage>(e => { handler2++; });

            var sent = publisher.Publish(new StringMessage("Foo"));

            Assert.True(sent);
            Assert.Equal(1, handler1);
            Assert.Equal(1, handler2);
        }
Esempio n. 16
0
        public void ExecuteMultipleMessagesInDefaultDomainSeperately()
        {
            int count = 0;
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
                count++;
            });

            TestMessage[] messages = new[] { new TestMessage(), new TestMessage(), new TestMessage() };
            foreach (TestMessage message in messages)
            {
                aggregator.Aggregate(message);
            }

            count.Should().Be(3, "all messages should execute seperately.");
        }
Esempio n. 17
0
        public object GetData(ITabContext context)
        {
            var messages   = context.GetMessages <AdoMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var queryData  = aggregator.Aggregate();

            SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryData);

            return(new
            {
                queryCount = sqlStatistics.QueryCount,
                connectionCount = sqlStatistics.ConnectionCount,
                transactionCount = sqlStatistics.TransactionCount,
                queryExecutionTime = sqlStatistics.QueryExecutionTime,
                connectionOpenTime = sqlStatistics.ConnectionOpenTime
            });
        }
Esempio n. 18
0
        public async Task A_valid_message_is_published_to_all_handlers()
        {
            var dispatcher      = new XamlDispatcher();
            var eventAggregator = new MessageAggregator();
            var handler1        = Substitute.For <IHandleAsync <object> >();
            var handler2        = Substitute.For <IHandleAsync <object> >();
            var handler3        = Substitute.For <IHandle <object> >();

            handler1.HandleAsync(Arg.Any <object>()).Returns(async(c) =>
            {
                Console.WriteLine(
                    $"{DateTime.Now} - Starting handler 1...");
                await Task.Delay(3000);
                Console.WriteLine(
                    $"{DateTime.Now} - Finished handler 1...");
            });
            handler3.When(c => c.Handle(Arg.Any <object>()))
            .Do((c) =>
            {
                Thread.Sleep(500);
                Console.WriteLine($"{DateTime.Now} - executing handler 3...");
            });
            handler2.HandleAsync(Arg.Any <object>()).Returns(async(c) =>
            {
                Console.WriteLine(
                    $"{DateTime.Now} - Starting handler 2...");
                await Task.Delay(3000);
                Console.WriteLine(
                    $"{DateTime.Now} - Finished handler 2...");
            });
            await eventAggregator.SubscribeAsync(handler1);

            await eventAggregator.SubscribeAsync(handler2);

            await eventAggregator.SubscribeAsync(handler3);

            var message = new object();
            await eventAggregator.PublishAsync(message);

#pragma warning disable 4014
            handler1.Received().HandleAsync(message);
            handler2.Received().HandleAsync(message);
            handler3.Received().Handle(message);
#pragma warning restore 4014
        }
Esempio n. 19
0
        public void AggregateMultipleMessagesInDifferentDomains()
        {
            bool executed = false;
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
                executed = true;
            });

            TestMessage[] messages = new[] { new TestMessage(), new TestMessage(), new TestMessage() };
            MessageDomain.CreateNewDomainsFor(messages);
            foreach (TestMessage message in messages)
            {
                aggregator.Aggregate(message);
            }

            executed.Should().BeTrue("all messages were added to the aggregator.");
        }
Esempio n. 20
0
        public void DoNotTerminateMessageDomainWhenParameterIsFalse()
        {
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
            }, false);

            TestMessage[] messages = new[] { new TestMessage(), new TestMessage(), new TestMessage() };
            MessageDomain.CreateNewDomainsFor(messages);
            foreach (TestMessage message in messages)
            {
                aggregator.Aggregate(message);
            }

            foreach (TestMessage message in messages)
            {
                message.MessageDomain.IsTerminated.Should().BeFalse("message domain should not have been terminated.");
            }
        }
Esempio n. 21
0
        public void TerminateMessageDomainAutomatically()
        {
            MessageAggregator <TestMessage> aggregator =
                new MessageAggregator <TestMessage>(set =>
            {
            });

            TestMessage[] messages = new[] { new TestMessage(), new TestMessage(), new TestMessage() };
            MessageDomain.CreateNewDomainsFor(messages);
            foreach (TestMessage message in messages)
            {
                aggregator.Aggregate(message);
            }

            foreach (TestMessage message in messages)
            {
                message.MessageDomain.IsTerminated.Should().BeTrue("message domain should have been terminated.");
            }
        }
Esempio n. 22
0
        public void Publishes_to_manifold_handler()
        {
            var aggregator = new MessageAggregator();
            var publisher  = new MessagePublisher(aggregator);

            var handler = new ManifoldMessageHandler();

            aggregator.Subscribe(handler);

            var sent = publisher.Publish(new StringMessage("Foo"));

            Assert.True(sent);
            Assert.Equal(1, handler.HandledString);
            Assert.Equal(0, handler.HandledInteger);

            sent = publisher.Publish(new IntegerMessage(123));
            Assert.True(sent);
            Assert.Equal(1, handler.HandledString);
            Assert.Equal(1, handler.HandledInteger);
        }
Esempio n. 23
0
        /// <summary>
        /// Constructor of LiNGS Client. Creates a new instance of <see cref="LiNGSClient"/>.
        /// </summary>
        /// <exception cref="ArgumentNullException">When any of the params is null.</exception>
        /// <param name="properties">Properties of the client. These properties cannot be changed after the server is running.</param>
        /// <param name="serverInfo">Information used to connect to the server.</param>
        /// <param name="networkedClient">Game logic to receive callbacks and manage game objects.</param>
        public LiNGSClient(ClientProperties properties, ServerInfo serverInfo, INetworkedClient networkedClient)
        {
            if (properties == null)
            {
                throw new ArgumentNullException("The client properties cannot be null.");
            }

            if (serverInfo == null)
            {
                throw new ArgumentNullException("The server information cannot be null.");
            }

            if (networkedClient == null)
            {
                throw new ArgumentNullException("The networkedClient cannot be null.");
            }

            this.UpdateManager    = new UpdateManager();
            this.ClientProperties = new ClientProperties(properties);
            this.ServerInfo       = new ServerInfo(serverInfo);

            NetworkManager          = new NetworkManager(this, ServerInfo.IP, ServerInfo.Port);
            Router                  = new Router(this);
            MessageAggregator       = new MessageAggregator(this);
            Manager                 = new Manager(this);
            Analyzer                = new Analyzer(this);
            ClientLogicProcessor    = new ClientLogicProcessor(this);
            Simulator               = new Simulator(this);
            Synchronizer            = new Synchronizer(this);
            ClientStatus            = new ClientStatus(this);
            NetworkedClientInstance = networkedClient;

            this.UpdateManager.AddUpdatable(MessageAggregator);
            this.UpdateManager.AddUpdatable(Manager);
            this.UpdateManager.AddUpdatable(Analyzer);
            this.UpdateManager.AddUpdatable(ClientLogicProcessor);
            this.UpdateManager.AddUpdatable(Simulator);
            this.UpdateManager.AddUpdatable(Synchronizer);
        }
Esempio n. 24
0
        protected override void Configure()
        {
            _container = new CompositionContainer(new AggregateCatalog(AssemblySource
                                                                       .Instance
                                                                       .Select(x => new AssemblyCatalog(x))
                                                                       .OfType <ComposablePartCatalog>()
                                                                       )
                                                  );

            var batch = new CompositionBatch();

            var portNames = SerialPort.GetPortNames();

            _portName = portNames.Length > 0 ? portNames[0] : string.Empty;
            try
            {
                _ecr = new Dp25(_portName);
            }
            catch (Exception ex)
            { }
            var messenger = new MessageAggregator();

            messenger.GetStream <SelectedPortChangedEvent>()
            .Subscribe(e =>
            {
                MessageBox.Show(
                    "ChangePort method removed from API, try to set the portname manually in code AppBootstrapper.cs:line 43");
            });

            batch.AddExportedValue <IWindowManager>(new WindowManager());
            batch.AddExportedValue <IMessageAggregator>(messenger);
            batch.AddExportedValue <Dp25>(_ecr);
            batch.AddExportedValue(_container);

            _container.Compose(batch);
        }
Esempio n. 25
0
        public override object GetData(ITabContext context)
        {
            var sanitizer     = new CommandSanitizer();
            var messages      = context.GetMessages <AdoMessage>().ToList();
            var aggregator    = new MessageAggregator(messages);
            var queryMetadata = aggregator.Aggregate();

            if (queryMetadata == null)
            {
                return(null);
            }

            var connections = new List <object[]> {
                new object[] { "Commands per Connection", "Duration" }
            };

            foreach (var connection in queryMetadata.Connections.Values)
            {
                if (connection.Commands.Count == 0 && connection.Transactions.Count == 0)
                {
                    continue;
                }

                var commands = new List <object[]> {
                    new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Records", "Duration", "Offset", "Async", "Transaction End", "Errors" }
                };
                var commandCount = 1;
                foreach (var command in connection.Commands.Values)
                {
                    // Transaction Start
                    List <object[]> headTransaction = null;
                    if (command.HeadTransaction != null)
                    {
                        headTransaction = new List <object[]> {
                            new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel }
                        };
                        if (!command.HeadTransaction.Committed.HasValue)
                        {
                            headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" });
                        }
                    }

                    // Transaction Finish
                    List <object[]> tailTransaction = null;
                    if (command.TailTransaction != null)
                    {
                        tailTransaction = new List <object[]> {
                            new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") }
                        };
                    }

                    // Parameters
                    List <object[]> parameters = null;
                    if (command.Parameters.Count > 0)
                    {
                        parameters = new List <object[]> {
                            new object[] { "Name", "Value", "Type", "Size" }
                        };
                        foreach (var parameter in command.Parameters)
                        {
                            parameters.Add(new[] { parameter.Name, parameter.Value, parameter.Type, parameter.Size });
                        }
                    }

                    // Exception
                    List <object[]> errors = null;
                    if (command.Exception != null)
                    {
                        var exception     = command.Exception.GetBaseException();
                        var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message;

                        errors = new List <object[]> {
                            new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace }
                        };
                    }

                    // Commands
                    var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected;

                    var status = errors != null ? "error" : (command.IsDuplicate ? "warn" : string.Empty);
                    commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), sanitizer.Process(command.Command, command.Parameters), parameters, records, command.Duration, command.Offset, command.IsAsync, tailTransaction, errors, status });
                }

                connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null });
            }

            if (connections.Count > 1)
            {
                SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryMetadata);

                return(new Dictionary <string, object>
                {
                    { "SQL Statistics", new object[] { new { sqlStatistics.ConnectionCount, sqlStatistics.QueryCount, sqlStatistics.TransactionCount, sqlStatistics.QueryExecutionTime, sqlStatistics.ConnectionOpenTime } } },
                    { "Queries", connections }
                });
            }

            return(null);
        }
Esempio n. 26
0
        private async void Start()
        {
            var aggregator = new MessageAggregator();

            _relay = aggregator;
            IConfigStore       configStore  = new AppDataConfigStore();
            IPreviewImageStore previewStore = new AppDataPreviewImageStore();

            _library = new Library(configStore, _previewBuilder, previewStore, _relay);
            var factory = new ImportFolderFactory(_library);

            // Main View
            var progressModel    = new ProgressModel();
            var applicationModel = new ApplicationModel(_relay);
            var searchViewModel  = new SearchModel(_library, _relay);
            var itemsViewModel   = new ItemsModel(_library, _relay);

            // Main Menu
            var importFoldersViewModel = new ImportFoldersModel(configStore, factory, _relay);
            var savedSearchesViewModel = new SavedSearchesModel(configStore, _relay);
            var collectionsViewModel   = new CollectionsModel(configStore, _relay);

            // Detail Menu
            var detailMenuModel = new DetailMenuModel(_library, _relay);

            // Dialogs
            var addSavedSearchViewModel  = new AddSavedSearchModel(_relay);
            var addImportFolderViewModel = new AddImportFolderModel(_relay);
            var applicationSettingsModel = new ApplicationSettingsModel(configStore);
            var userFeedbackModel        = new UserFeedbackModel();
            var exitingModel             = new ExitingModel(_library, OnShutdownComplete);
            var editScreenModel          = new EditScreenModel(_library);

            BindViewModels();
            BindSettings();

            // Wire up misc items
            _disposables.Add(importFoldersViewModel);
            _editScreen.MainView = _mainGroup;

            // Also restores app settings for import etc.
            await applicationSettingsModel.InitializeAsync();

            await _library.InitializeAsync();

            InitializeViewModelsAsync();

            aggregator.Subscribe(
                // Main View
                progressModel,
                searchViewModel,
                itemsViewModel,

                // Main Menu
                importFoldersViewModel,
                savedSearchesViewModel,
                collectionsViewModel,

                // DetailMenu
                detailMenuModel,

                // Dialogs
                addSavedSearchViewModel,
                addImportFolderViewModel,
                applicationSettingsModel,
                userFeedbackModel,
                exitingModel,
                editScreenModel);

            void BindViewModels()
            {
                // Main View
                _progressView.BindTo(progressModel);
                _applicationView.BindTo(applicationModel);
                _searchView.BindTo(searchViewModel);
                _libraryView.BindTo(itemsViewModel);

                // Main Menu
                _importFoldersView.BindTo(importFoldersViewModel);
                _savedSearchesView.BindTo(savedSearchesViewModel);
                _collectionsView.BindTo(collectionsViewModel);

                // Detail Menu
                _detailMenu.BindTo(detailMenuModel);

                // Dialogs
                _addImportFolderDialog.BindTo(addImportFolderViewModel);
                _addSavedSearchDialog.BindTo(addSavedSearchViewModel);
                _applicationSettingsDialog.BindTo(applicationSettingsModel);
                _userFeedbackDialog.BindTo(userFeedbackModel);
                _exitingDialog.BindTo(exitingModel);
                _editScreen.BindTo(editScreenModel);
            }

            void BindSettings()
            {
                var rt = applicationSettingsModel.RuntimeSettings;

                rt.ImportParallelism.ValueChanged += factor => _library.Parallelism = factor;
                rt.LogLevel.ValueChanged          += logLevel => UnityLogger.LogLevel = logLevel;

                rt.UiScalePercent.ValueChanged += factor =>
                {
                    foreach (var canvas in FindObjectsOfType <Canvas>())
                    {
                        canvas.scaleFactor = applicationSettingsModel.UiScalePercent / 125f;
                    }
                };

                rt.ScrollSensitivity.ValueChanged += sensitivity =>
                {
                    foreach (var area in FindObjectsOfType <ScrollRect>())
                    {
                        area.scrollSensitivity = sensitivity;
                    }
                };

                rt.PreviewResolution.ValueChanged  += res => _previewBuilder.PreviewResolution.Value = Mathf.RoundToInt(Mathf.Pow(2f, res));
                rt.PreviewJpegQuality.ValueChanged += quality => _previewBuilder.Quality = quality;
            }

            async void InitializeViewModelsAsync()
            {
                await savedSearchesViewModel.InitializeAsync();

                await importFoldersViewModel.InitializeAsync();

                await collectionsViewModel.InitializeAsync();
            }
        }
Esempio n. 27
0
 public FiltersViewModel(List<IFilter> filters, MessageAggregator messenger)
 {
     _filters = filters;
     _messenger = messenger;
 }
Esempio n. 28
0
        private static void Main(string[] args)
        {
            SetWindowSize(WindowWidth, WindowHeight);
            Clear();
            var storageConnection = ConfigurationManager.AppSettings["AzureStorageConnectionString"];
            var eventhubConnS     = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString.Listen"];

            Eventhubpath = ConfigurationManager.AppSettings["EventHubPath"];
            var alarmQueueConnS = ConfigurationManager.AppSettings["ServiceBus.Queue.Connectionstring"];
            var alarmQueueName  = ConfigurationManager.AppSettings["ServiceBus.Queue.Name"];

            WriteLineAndLog("Starting analyzer for hub: " + Eventhubpath);

            var alarmQueue  = new ServiceBusConnection <AlarmMessage>(alarmQueueConnS, alarmQueueName);
            var alarmManger = new AlarmMessageManager(alarmQueue);
            var ruleStorage = new DocumentDBRuleStorage(ConfigurationManager.AppSettings["DocDBEndPointUrl"], ConfigurationManager.AppSettings["AuthorizationKey"], ConfigurationManager.AppSettings["RuleDatabaseId"], ConfigurationManager.AppSettings["RuleCollectionId"]);

            Engine = new AnalyzerEngine();
            ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(eventhubConnS);

            builder.TransportType = TransportType.Amqp;
            var connection = new EventHubProcessor(builder.ToString(), Eventhubpath);

            WriteLineAndLog("Starting event receiver.");
            var recTask = connection.StartReceiver <EventProc>(storageConnection);

            recTask.Wait();

            WriteLineAndLog("Receiver waiting.");
            var engineStartCounter = 0;
            var maxEngineRestarts  = 10;

            try
            {
                new Thread(() =>
                {
                    Thread.CurrentThread.IsBackground = true;
                    while (true)
                    {
                        if (!AwaitingInput)
                        {
                            Render();
                            Thread.Sleep(500);
                        }
                    }
                }).Start();
                new Thread(() =>
                {
                    Thread.CurrentThread.IsBackground = true;
                    while (true)
                    {
                        ParseInput();
                    }
                }).Start();


                while (true)
                {
                    MessageAggregator.Collection.Clear();
                    for (var i = 0; i < 500; ++i)
                    {
                        TimeStampedMessage <string> msg;
                        if (Engine.EngineMessages.TryDequeue(out msg))
                        {
                            MessageAggregator.AddMessage(msg, msg.Message.GenerateMessageIdentifierFromString());
                        }
                    }
                    foreach (var messageTracker in MessageAggregator.Collection)
                    {
                        MesseageOutputQueue.Enqueue($"{messageTracker.Value.Message} | {messageTracker.Value.AmountCounter} times from {messageTracker.Value.FirstOccurrence} to {messageTracker.Value.LastOccurrence}");
                    }
                    if (Engine.State == State.ShuttingDown)
                    {
                        continue;
                    }
                    if (Engine.State == State.Stopped)
                    {
                        Engine.StartEngine(ruleStorage, alarmManger);
                        if (maxEngineRestarts <= engineStartCounter++)
                        {
                            var message = $"AnalyserEngine main task has been restared {engineStartCounter - 1} times. Engine is down and can not recover! Resetting start counter.";
                            Logger.AddRow(message);
                            MesseageOutputQueue.Enqueue(message);
                            var alarm = new AlarmMessage(AlarmLevel.High, AppDomain.CurrentDomain.FriendlyName, message);
                            alarmManger.RaiseAlarm(alarm);
                            engineStartCounter = 0;
                        }
                    }
                    var timer = new Stopwatch();
                    timer.Start();
                    while (!Engine.EngineIsRunning && timer.ElapsedMilliseconds < 30000)
                    {
                        MesseageOutputQueue.Enqueue("Awaiting engine start. Waited " + timer.ElapsedMilliseconds + " ms");
                        Thread.Sleep(1000);
                    }
                    timer.Reset();
                }
            }
            catch (Exception ex)
            {
                var alarm = new AlarmMessage(AlarmLevel.High, AppDomain.CurrentDomain.FriendlyName, $"Exception in main loop.", ex.Message);
                alarmManger.RaiseAlarm(alarm);
                WriteLineAndLog($"Exception in main loop.");
                WriteLineAndLog(ex.ToString());
            }

            WriteLineAndLog("End of program.");
        }
Esempio n. 29
0
 public virtual void Initialize()
 {
     messageAggregator = new MessageAggregator();
 }
Esempio n. 30
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages<AdomdMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var metadata = aggregator.Aggregate();

            if (metadata == null)
            {
                return null;
            }

            var connections = new List<object[]> { new object[] { "Commands per Connection", "Duration" } };
            foreach (var connection in metadata.Connections.Values)
            {
                if (connection.Commands.Count == 0 && connection.Transactions.Count == 0)
                {
                    continue;
                }

                var commands = new List<object[]> { new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Duration", "Offset", "Transaction End", "Errors" } };
                var commandCount = 1;
                foreach (var command in connection.Commands.Values)
                {
                    // Transaction Start
                    List<object[]> headTransaction = null;
                    if (command.HeadTransaction != null)
                    {
                        headTransaction = new List<object[]> { new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel } };
                        if (!command.HeadTransaction.Committed.HasValue)
                        {
                            headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" });
                        }
                    }

                    // Transaction Finish
                    List<object[]> tailTransaction = null;
                    if (command.TailTransaction != null)
                    {
                        tailTransaction = new List<object[]> { new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") } };
                    }

                    // Parameters
                    List<object[]> parameters = null;
                    if (command.Parameters.Count > 0)
                    {
                        parameters = new List<object[]> { new object[] { "Name", "Value"} };
                        foreach (var parameter in command.Parameters)
                        {
                            parameters.Add(new[] { parameter.Name, parameter.Value });
                        }
                    }

                    // Exception
                    List<object[]> errors = null;
                    if (command.Exception != null)
                    {
                        var exception = command.Exception.GetBaseException();
                        var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message;

                        errors = new List<object[]> { new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace } };
                    }

                    // Commands
                    var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected;

                    var status = string.Empty;
                    commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), command.Command, parameters, command.Duration, command.Offset, tailTransaction, errors, status });
                }

                connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null });
            }

            if (connections.Count > 1)
            {
                var statistics = MdxStatisticsBuilder.Build(metadata);

                return new Dictionary<string, object>()
                {
                    {
                        "MDX Statistics",
                        new object[]
                        {
                            new
                            {
                                statistics.ConnectionCount,
                                statistics.QueryCount,
                                statistics.TransactionCount,
                                statistics.QueryExecutionTime,
                                statistics.ConnectionOpenTime
                            }
                        }
                    },
                    {"Queries", connections}
                };
            }
            return null;
        }
 public void Init()
 {
     _filters = new List<IFilter> { new ColorFilterViewModel() };
     _messenger = new MessageAggregator();
     _filtersViewModel = new FiltersViewModel(_filters, _messenger);
 }
Esempio n. 32
0
 /// <summary>
 /// Initializes static members of the <see cref="MessageAggregator"/> class.
 /// </summary>
 static MessageAggregator()
 {
     Aggregator = new MessageAggregator();
 }
 public TemplatesAggregator(IMessageBoard messageBoard) : base(messageBoard)
 {
     aggregator = new MessageAggregator <TemplateLoaded>(OnAggregated);
 }
 public FilesGeneratedAggregator(IMessageBoard messageBoard) : base(messageBoard)
 {
     aggregator = new MessageAggregator <FileGenerated>(OnAggregated);
 }
 public void Init()
 {
     _repository = new InMemoryRepository();
     _messagenger = new MessageAggregator();
     _viewModel = new ReportViewModel(_repository, _messagenger);
 }