public static ReservationBase CreateReservation(Guid mailboxGuid, TenantPartitionHint partitionHint, Guid resourceId, ReservationFlags flags, string clientName) { ReservationBase result; lock (ReservationManager.Locker) { ReservationBase reservationBase = ReservationBase.CreateReservation(mailboxGuid, partitionHint, resourceId, flags, clientName); ReservationManager.reservations.TryInsertSliding(reservationBase.ReservationId, reservationBase, ConfigBase <MRSConfigSchema> .GetConfig <TimeSpan>("ReservationExpirationInterval")); reservationBase.AddReleaseAction(new Action <ReservationBase>(ReservationManager.ReleaseReservation)); result = reservationBase; } return(result); }
public void AddReservation(ReservationBase reservation) { if (!this.IsDisabled && !this.DynamicThrottlingDisabled) { IResourceAdmissionControl admissionControl = this.admissionControl; double num; if (!admissionControl.TryAcquire(this.Owner.WorkloadClassification, out num)) { ResourceLoad currentLoad = this.GetCurrentLoad(); throw new WlmResourceUnhealthyException(this.Owner.ResourceName, this.Owner.ResourceType, this.WlmResourceKey.ToString(), (int)this.WlmResourceKey.MetricType, currentLoad.LoadRatio, currentLoad.State.ToString(), (currentLoad.Metric != null) ? currentLoad.Metric.ToString() : "(null)"); } reservation.AddReleaseAction(delegate(ReservationBase r) { this.ReleaseReservation(r, admissionControl); }); } }
protected virtual void AddReservation(ReservationBase reservation) { this.Reservations.Add(reservation.ReservationId, reservation); reservation.AddReleaseAction(new Action <ReservationBase>(this.ReleaseReservation)); }