Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var consoleOutputManager = new ConsoleOutputManager();
            var timeProvider = new TimeProvider();
            var messageRepository = new MessagesRepository();
            var followingRepository = new FollowingRepository();

            consoleOutputManager.WriteLine("Welcome to RetroTwitter");
            consoleOutputManager.WriteLine();
            ShowInstructions(consoleOutputManager);
            consoleOutputManager.WriteLine();

            consoleOutputManager.WriteLine("What do you want to do today?");

            var commandFactory = new CommandCreatorsFactory(consoleOutputManager, timeProvider, messageRepository, followingRepository);
            while (true)
            {
                consoleOutputManager.Write(">");
                var commandString = consoleOutputManager.ReadLine();
                var command = commandFactory.ParseStringToCommand(commandString);
                if (command != null)
                {
                    command.Execute();
                }
                else
                {
                    consoleOutputManager.WriteLine("Sorry, I didn't catch that.");
                }
            }

            consoleOutputManager.WriteLine("RetroTwitter is terminating and all the collected data are being destroyed.");

            // ReSharper disable once FunctionNeverReturns
        }
        public void EmptyUsage()
        {
            // arrange
            ConsoleOutputManager manager = new ConsoleOutputManager();
            List <NetworkData>   data    = new List <NetworkData>()
            {
            };
            var        stream = new MemoryStream();
            TextWriter writer = new StreamWriter(stream);

            // act
            manager.Write(writer, data);
            writer.Flush();
            string actual = Encoding.UTF8.GetString(stream.ToArray());

            // assert
            StringAssert.AreEqualIgnoringCase("", actual);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var _outputManager = new ConsoleOutputManager();
            var _inputManager  = new ConsoleInputManager(_outputManager);
            var _safeExecutor  = new SafeExecuteManager(_outputManager);

            var menu    = new MenuManager(_outputManager, _inputManager);
            var counter = new SumCounter();

            //ToTestRecalculating(counter, menu);

            var values = menu.AskForCalculatingValues();

            _safeExecutor.ExecuteWithExceptionHandling(() =>
            {
                counter.CalculateSumAsync((int)values.start, (int)values.limit).ContinueWith(result => menu.DisplayResultMessage(values, result.Result));
            });

            menu.DisplayStartingCalculatingMessage();

            Console.ReadLine();
        }
Exemplo n.º 4
0
        public void BasicExecutionTest()
        {
            // arrange
            IOutputManager outputManager = new ConsoleOutputManager();
            var            data          = new List <NetworkInterfaceData>()
            {
                new NetworkInterfaceData()
                {
                    Name = "TestInterface", IP = "127.0.0.1"
                }
            };
            MemoryStream stream = new MemoryStream();
            TextWriter   writer = new StreamWriter(stream);

            // act
            outputManager.WriteOutput(writer, data);
            writer.Flush();
            var actual = Encoding.ASCII.GetString(stream.ToArray());

            // assert
            StringAssert.AreEqualIgnoringCase("Network-Interface: TestInterface (127.0.0.1)" + Environment.NewLine, actual);
        }
Exemplo n.º 5
0
        public async Task <string> OpenAsync(CancellationToken cancellationToken)
        {
            var listener = new EventHubsListener(_configuration);

            var parser = new EventHubListenerMessageJsonParser();

            var builder = new MessageRouterBuilder();

            var clusteringSerializer = new CsvOutputFormatter("id", "type", "version", "enqueueTimeUtc",
                                                              "gameSessionId", "lat", "lon", "geoHash", "geoHashPrecision", "geoHashCenterLat", "geoHashCenterLon",
                                                              "rnd");

            var clusteringDlsOutputManager = new DataLakeStoreOutputManager(
                clusteringSerializer,
                new PipelineDateFilePathAlgorithm(newFileOption: NewFileNameOptions.Every5Minutes),
                _serviceClientCredentials,
                _subscription,
                _dataLakeName);

            var clusteringConsoleOutputManager = new ConsoleOutputManager(clusteringSerializer);

            builder.Pipeline("clustering")
            .HandlesMessageType("geo-location", "1.0.0")
            .HandlesMessageType("geo-location", "1.0.1")
            .AddHandler(new RandomIntMessageHandler())
            .OutputTo(clusteringConsoleOutputManager, clusteringDlsOutputManager);


            // Build all pipelines
            var router = builder.Build();

            // Attach the differeing parts of the message processor together
            _messageProcessor = new MessageProcessor <EventHubListenerMessage>(listener, parser, router);

            // The following method will never exit
            //await messageProcessor.ProcessAndBlockAsync();

            return(_configuration.EventHubPath);
        }
Exemplo n.º 6
0
        public void Start()
        {
            Console.WriteLine("Hello, this is a simple bash terminal emulator!\n\n" +
                              "Available commands:\n" +
                              "ls - list directories and files in working directory\n" +
                              "cd [directoryName] - change directory\n" +
                              "[driveName]: - change drive\n" +
                              "pwd - print working directory\n" +
                              "wc [file]- show lines, words and bytes in specified file\n" +
                              "cat [file]- show content of specified file\n" +
                              "echo [input] - print input in terminal\n" +
                              "$ - is used for variables\n" +
                              "| - command pipeline\n" +
                              "&[assemblyPath] - load new commands to Bash\n");

            while (true)
            {
                Console.Write("$ ");
                var executeResult = bash.Execute(Console.ReadLine());
                Console.Write(ConsoleOutputManager.GetConsoleOutput(executeResult.ToList()));
            }
        }
        public void BasicUsage()
        {
            // arrange
            ConsoleOutputManager manager = new ConsoleOutputManager();
            List <NetworkData>   data    = new List <NetworkData>()
            {
                new NetworkData()
                {
                    Name = "NIC1",
                    IP   = "1.2.3.4"
                }
            };
            var        stream = new MemoryStream();
            TextWriter writer = new StreamWriter(stream);

            // act
            manager.Write(writer, data);
            writer.Flush();
            string actual = Encoding.UTF8.GetString(stream.ToArray());

            // assert
            StringAssert.AreEqualIgnoringCase("NIC: NIC1 (1.2.3.4)\r\n", actual);
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

            var _outputManager = new ConsoleOutputManager();
            var _safeExecutor  = new SafeExecuteManager(_outputManager);

            var _mathTasks         = new MathTasksImplementation(_outputManager);
            var _threadTasks       = new ThreadsTasksImplementation(_outputManager);
            var _collectionTasks   = new CollectionTasksImplementation(_outputManager);
            var _continuationTasks = new ContinuationTasksImplementation(_outputManager);

            // Task 1
            _safeExecutor.ExecuteWithExceptionHandling(() => _mathTasks.Task1(10, 10));
            _outputManager.DisplayDelimeter();

            // Task 2
            _safeExecutor.ExecuteWithExceptionHandling(() => _mathTasks.Task2(10).Wait());
            _outputManager.DisplayDelimeter();

            // Task 3
            var matrixA = MathHelper.GenerateIntMatrix(new MatrixSizeParams {
                RowsNumber = 2, ColumnsNumber = 2
            }, fillWithValues: true);
            var matrixB = MathHelper.GenerateIntMatrix(new MatrixSizeParams {
                RowsNumber = 2, ColumnsNumber = 2
            }, fillWithValues: true);

            _safeExecutor.ExecuteWithExceptionHandling(() => _mathTasks.Task3(matrixA, matrixB));
            _outputManager.DisplayDelimeter();

            // Task 4
            var startValue = 15;

            _safeExecutor.ExecuteWithExceptionHandling(() => _threadTasks.Task4(startValue));
            _outputManager.DisplayDelimeter();

            // Task 5
            _safeExecutor.ExecuteWithExceptionHandling(() => _threadTasks.Task5(startValue));
            _outputManager.DisplayDelimeter();

            // Task 6
            _safeExecutor.ExecuteWithExceptionHandling(() => _collectionTasks.Task6());
            _outputManager.DisplayDelimeter();

            // Task 7.1
            Action regardlessResultLogic = () => { };

            _safeExecutor.ExecuteWithExceptionHandling(() => _continuationTasks.Task7_ContinueRegardlessResult(regardlessResultLogic));
            _outputManager.DisplayDelimeter();

            // Task 7.2
            Action faultResultLogic = () => throw new InvalidOperationException();

            _safeExecutor.ExecuteWithExceptionHandling(() => _continuationTasks.Task7_ContinueOnParentFailed(faultResultLogic));
            _outputManager.DisplayDelimeter();

            // Task 7.3
            _safeExecutor.ExecuteWithExceptionHandling(() => _continuationTasks.Task7_ContinueOnParentFailedAndUseParentThreadForContinuation(faultResultLogic));
            _outputManager.DisplayDelimeter();

            // Task 7.4
            _safeExecutor.ExecuteWithExceptionHandling(() => _continuationTasks.Task7_ContinueOnParentCanceledOutsideThreadpool(regardlessResultLogic));
            _outputManager.DisplayDelimeter();

            Console.ReadKey();
        }
Exemplo n.º 9
0
        private static void Main(string[] args)
        {
            Greet();

            SetupConfigurationProviders();

            // Check that all configurations are set before continuing
            var configStatus = CheckConfigurationStatus(
                NAH_EHListener_ConnectionString,
                NAH_EHListener_EventHubPath,
                NAH_EHListener_ConsumerGroup,
                NAH_EHListener_StorageConnectionString,
                NAH_EHListener_LeaseContainerName,
                NAH_AAD_Domain,
                NAH_AAD_ClientId,
                NAH_AAD_ClientSecret,
                NAH_Azure_SubscriptionId,
                NAH_Azure_DLSOutputManager_AccountName);

            if (configStatus != ConfigurationStatus.Ok)
            {
                // Exiting due to missing configuration
                Console.WriteLine("Press any key to continue");
                Console.ReadKey(true);
                return;
            }


            // Setup Listener. This will be the same for all pipelines we are building.
            var listenerConfig = new EventHubsListenerConfiguration
            {
                EventHubConnectionString = s_configuration[NAH_EHListener_ConnectionString],
                EventHubPath             = s_configuration[NAH_EHListener_EventHubPath],
                ConsumerGroupName        = s_configuration[NAH_EHListener_ConsumerGroup],
                StorageConnectionString  = s_configuration[NAH_EHListener_StorageConnectionString],
                LeaseContainerName       = s_configuration[NAH_EHListener_LeaseContainerName]
            };
            var listener = new EventHubsListener(listenerConfig);

            // Setup Message Parser. By default we are using Nether JSON Messages
            // Setting up parser that knows how to parse those messages.
            var parser = new EventHubListenerMessageJsonParser();

            // User a builder to create routing infrastructure for messages and the pipelines
            var builder = new MessageRouterBuilder();

            // Setting up "Geo Clustering Recipe"

            var clusteringSerializer = new CsvOutputFormatter("id", "type", "version", "enqueueTimeUtc", "gameSessionId", "lat", "lon", "geoHash", "geoHashPrecision", "geoHashCenterLat", "geoHashCenterLon");

            var clusteringDlsOutputManager = new DataLakeStoreOutputManager(
                clusteringSerializer,
                new PipelineDateFilePathAlgorithm(newFileOption: NewFileNameOptions.Every5Minutes),

                domain: s_configuration[NAH_AAD_Domain],
                clientId: s_configuration[NAH_AAD_ClientId],
                clientSecret: s_configuration[NAH_AAD_ClientSecret],
                subscriptionId: s_configuration[NAH_Azure_SubscriptionId],
                adlsAccountName: s_configuration[NAH_Azure_DLSOutputManager_AccountName]);

            var clusteringConsoleOutputManager = new ConsoleOutputManager(clusteringSerializer);

            builder.Pipeline("clustering")
            .HandlesMessageType("geo-location", "1.0.0")
            .HandlesMessageType("geo-location", "1.0.1")
            .AddHandler(new GeoHashMessageHandler {
                CalculateGeoHashCenterCoordinates = true
            })
            .OutputTo(clusteringConsoleOutputManager, clusteringDlsOutputManager);


            // Build all pipelines
            var router = builder.Build();

            // Attach the differeing parts of the message processor together
            var messageProcessor = new MessageProcessor <EventHubListenerMessage>(listener, parser, router);

            // Run in an async context since main method is not allowed to be marked as async
            Task.Run(async() =>
            {
                await messageProcessor.ProcessAndBlockAsync();
            }).GetAwaiter().GetResult();
        }