コード例 #1
0
        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);
        }
コード例 #2
0
 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);
         });
     }
 }
コード例 #3
0
 protected virtual void AddReservation(ReservationBase reservation)
 {
     this.Reservations.Add(reservation.ReservationId, reservation);
     reservation.AddReleaseAction(new Action <ReservationBase>(this.ReleaseReservation));
 }