private static void Main(string[] arguments) { if (null == arguments) { Console.WriteLine(FileProvisioningServiceResources.InformationCommandLineArguments); return; } if (Program.NumberArguments > arguments.Length) { Console.WriteLine(FileProvisioningServiceResources.InformationCommandLineArguments); return; } string argumentBaseAddress = arguments[0]; Uri baseAddress = null; if (!Uri.TryCreate(argumentBaseAddress, UriKind.Absolute, out baseAddress)) { Console.WriteLine(FileProvisioningServiceResources.InformationCommandLineArguments); return; } string informationBaseAddress = string.Format( CultureInfo.InvariantCulture, FileProvisioningServiceResources.InformationBaseAddressTemplate, argumentBaseAddress); Console.WriteLine(informationBaseAddress); IMonitor monitor = new ProvisioningAgentMonitor(FileProvisioningServiceResources.PromptTerminate); FileProviderBase provider = null; try { provider = new AccessConnectivityEngineFileProviderFactory( arguments[1], monitor) .CreateProvider(); Service webService = null; try { webService = new WebService(monitor, provider); webService.Start(baseAddress); string informationStarted = string.Format( CultureInfo.InvariantCulture, FileProvisioningServiceResources.InformationServiceStartedTemplate, argumentBaseAddress); Console.WriteLine(informationStarted); Console.WriteLine(FileProvisioningServiceResources.PromptTerminate); Console.ReadKey(true); } finally { if (webService != null) { webService.Dispose(); webService = null; } } } finally { if (provider != null) { provider.Dispose(); provider = null; } } }
private static void Main(string[] arguments) { if (null == arguments) { Console.WriteLine(FileProvisioningAgentResources.InformationCommandLineArguments); return; } if (Program.NumberArguments != arguments.Length) { Console.WriteLine(FileProvisioningAgentResources.InformationCommandLineArguments); return; } Guid tenantIdentifier = new Guid(arguments[1]); Guid servicePrincipalIdentifier = new Guid(arguments[2]); string provisioningTaskIdentifier = new AzureToAgentTaskIdentifierFactory() .Create( tenantIdentifier, servicePrincipalIdentifier); IMonitor monitor = new ProvisioningAgentMonitor(FileProvisioningAgentResources.PromptTerminate); FileProviderBase provider = null; try { provider = new AccessConnectivityEngineFileProviderFactory( arguments[0], monitor) .CreateProvider(); TokenFactory tokenFactory = null; try { tokenFactory = new AzureHubClientTokenFactory(arguments[3], arguments[4]); IAgent agent = null; try { agent = new Agent( provisioningTaskIdentifier, tokenFactory, provider, monitor); tokenFactory = null; CancellationTokenSource terminationTokenSource = null; try { terminationTokenSource = new CancellationTokenSource(); CancellationToken terminationToken = terminationTokenSource.Token; Func <Task> provisioningFunction = new Func <Task>( () => agent.ProvisionAsync(terminationToken)); Task provisioningTask = null; try { provisioningTask = Task.Run(provisioningFunction, terminationToken); Console.WriteLine(FileProvisioningAgentResources.PromptTerminate); Console.ReadKey(true); terminationTokenSource.Cancel(); } catch (AggregateException exception) { if (!Program.IsOperationCancelledException(exception)) { throw; } } catch (OperationCanceledException) { } finally { if (provisioningTask != null) { provisioningTask.Wait(); provisioningTask.Dispose(); provisioningTask = null; } } } finally { if (terminationTokenSource != null) { terminationTokenSource.Dispose(); terminationTokenSource = null; } } } finally { if (agent != null) { agent.Dispose(); agent = null; } } } finally { if (tokenFactory != null) { tokenFactory.Dispose(); tokenFactory = null; } } } finally { if (provider != null) { provider.Dispose(); provider = null; } } }