public override void BeginExit(Action onFailed) { try { this.OnFailed = onFailed; Binding controllerBinding = null; if (this.https) { controllerBinding = ProxyBinding.BrokerProxyControllerHttpBinding; } else { controllerBinding = ProxyBinding.BrokerProxyControllerBinding; } BrokerTracing.TraceVerbose("[AzureServiceHostController].BeginExit: construct the client. Binding {0}, Endpoint {1} , https = {2}", controllerBinding, this.controllerEndpoint, this.https); ProxyServiceControlClient proxyServiceControlClient = new ProxyServiceControlClient(controllerBinding, this.controllerEndpoint); proxyServiceControlClient.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; Utility.SetAzureClientCertificate(proxyServiceControlClient.ChannelFactory.Credentials); BrokerTracing.TraceVerbose("[AzureServiceHostController].BeginExit: BeginExit. Binding {0}, Endpoint {1}", controllerBinding, this.controllerEndpoint); this.controllerClient = proxyServiceControlClient; BindingData bindingData = new BindingData(this.binding); proxyServiceControlClient.BeginExit( this.dispatcherInfo.MachineName, this.dispatcherInfo.JobId, this.dispatcherInfo.TaskId, this.dispatcherInfo.FirstCoreId, bindingData, this.EndExit, proxyServiceControlClient); BrokerTracing.TraceVerbose("[AzureServiceHostController].BeginExit: Called. Binding {0}, Endpoint {1}", controllerBinding, this.controllerEndpoint); } catch (Exception e) { BrokerTracing.TraceWarning("[AzureServiceHostController].BeginExit: Error occurs, {0}", e); this.OnFailed(); // If BeginExit fails, dont retry any further. The task likely terminated already if (this.controllerClient != null) { Utility.AsyncCloseICommunicationObject(this.controllerClient); } } }
public void Exit(string machine, int jobId, int taskId, int port, BindingData data) { this.Channel.Exit(machine, jobId, taskId, port, data); }
public IAsyncResult BeginExit(string machine, string jobId, string taskId, int port, BindingData data, AsyncCallback callback, object state) { return(this.Channel.BeginExit(machine, jobId, taskId, port, data, callback, state)); }