private void InitializeJobObject() { if (this.jobObject != null) { return; } // Create the JobObject this.jobObject = new CloudFoundry.WindowsPrison.Utilities.WindowsJobObjects.JobObject("Global\\" + this.User.UserName); if (this.Configuration.CPUPercentageLimit > 0) { this.JobObject.CPUPercentageLimit = this.Configuration.CPUPercentageLimit; } if (this.Configuration.TotalPrivateMemoryLimitBytes > 0) { this.JobObject.JobMemoryLimitBytes = this.Configuration.TotalPrivateMemoryLimitBytes; } if (this.Configuration.ActiveProcessesLimit > 0) { this.JobObject.ActiveProcessesLimit = this.Configuration.ActiveProcessesLimit; } if (this.Configuration.PriorityClass.HasValue) { this.JobObject.PriorityClass = this.Configuration.PriorityClass.Value; } this.jobObject.KillProcessesOnJobClose = true; }
public void Destroy() { if (this.IsLocked) { Logger.Debug("Destroying prison {0}", this.Id); foreach (var cell in this.prisonCells) { cell.Destroy(this); } this.jobObject.TerminateProcesses(-1); this.jobObject.Dispose(); this.jobObject = null; // TODO: Should destroy delete the home directory??? // Directory.CreateDirectory(prisonRules.PrisonHomePath); this.PrisonGuard.TryStopGuard(); this.User.Profile.UnloadUserProfileUntilReleased(); this.User.Profile.DeleteUserProfile(); this.User.Delete(); this.SystemRemoveQuota(); } this.DeletePersistedPrison(); this.IsLocked = false; }