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); }
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(); }
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); }
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); }
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); }
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(); }
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(); }