コード例 #1
0
        private void StartOrConnectToDeployment(Deployment deployment)
        {
            Log.Print(LogLevel.Info, $"Deployment {deployment.Name}, Status {deployment.Status}.");

            var request = DeploymentModifier.GetGetDeploymentRequest(deployment.Id, workerConfig.ProjectName);

            while (deployment.Status == Deployment.Types.Status.Starting || deployment.Status == Deployment.Types.Status.Stopping)
            {
                // Wait before checking the deployment status again.
                Task.Delay(TaskDelay).Wait();
                deployment = DeploymentModifier.GetDeployment(request);
            }

            switch (deployment.Status)
            {
            case Deployment.Types.Status.Running:
                ConnectToDeployment(deployment);
                break;

            case Deployment.Types.Status.Stopped:
                StartDeployment(deployment.Name);
                break;

            case Deployment.Types.Status.Unknown:
            case Deployment.Types.Status.Error:
                Log.Print(LogLevel.Warn, $"The deployment {deployment.Name} is in an unrecoverable state ({deployment.Status}). Trying to restart it.", serviceConnection);
                DeploymentModifier.StopDeployment(deployment);
                Task.Delay(TaskDelay).Wait();
                StartOrConnectToDeployment(deployment);
                break;
            }
        }
コード例 #2
0
        private void UpdateDeploymentStatus(Improbable.Session.Status status)
        {
            DeploymentModifier.UpdateDeploymentTag(request, Tags.Status, status.ToString().ToLower());

            if (status == Improbable.Session.Status.STOPPED)
            {
                var deployment = DeploymentModifier.GetDeployment(request);
                DeploymentModifier.StopDeployment(deployment);
            }
        }
コード例 #3
0
        private void ProcessingOps(Object deploymentInfoObject)
        {
            var deploymentInfo = (DeploymentInformation)deploymentInfoObject;

            while (deploymentInfo.Connection.GetConnectionStatusCode() == ConnectionStatusCode.Success)
            {
                UpdatePlayerCount(deploymentInfo.ToGetDeploymentRequest());
                deploymentInfo.Handler.ProcessOps();
                Task.Delay(OpsDelay).Wait();
            }

            Task.Run(() =>
            {
                try
                {
                    var deployment = DeploymentModifier.GetDeployment(deploymentInfo.ToGetDeploymentRequest());
                    StartOrConnectToDeployment(deployment);
                }
                catch (Exception e)
                {
                    Log.Print(LogLevel.Error, $"{e.Message}\n{e.StackTrace}");
                }
            });
        }