Esempio n. 1
0
        public static RemoteReservation Create(string serverFQDN, NetworkCredential credentials, Guid mailboxGuid, TenantPartitionHint partitionHint, Guid mdbGuid, ReservationFlags flags)
        {
            RemoteReservation result;

            using (MailboxReplicationProxyClient mailboxReplicationProxyClient = MailboxReplicationProxyClient.CreateWithoutThrottling(serverFQDN, credentials, mailboxGuid, mdbGuid))
            {
                Guid reservationID;
                if (mailboxReplicationProxyClient.ServerVersion[37])
                {
                    byte[] partitionHintBytes = (partitionHint != null) ? partitionHint.GetPersistablePartitionHint() : null;
                    reservationID = ((IMailboxReplicationProxyService)mailboxReplicationProxyClient).IReservationManager_ReserveResources(mailboxGuid, partitionHintBytes, mdbGuid, (int)flags);
                }
                else if (mailboxReplicationProxyClient.ServerVersion[28])
                {
                    reservationID = Guid.NewGuid();
                    LegacyReservationStatus legacyReservationStatus = (LegacyReservationStatus)((IMailboxReplicationProxyService)mailboxReplicationProxyClient).IMailbox_ReserveResources(reservationID, mdbGuid, (int)RemoteReservation.ConvertReservationFlagsToLegacy(flags, true));
                    if (legacyReservationStatus != LegacyReservationStatus.Success)
                    {
                        throw new CapacityExceededReservationException(string.Format("{0}:{1}:{2}", serverFQDN, mdbGuid, flags), 1);
                    }
                }
                else
                {
                    reservationID = RemoteReservation.DownlevelReservationId;
                }
                result = new RemoteReservation(reservationID, serverFQDN, credentials, mailboxGuid, mdbGuid, flags);
            }
            return(result);
        }
Esempio n. 2
0
 public void ConfirmLegacyReservation(MailboxReplicationProxyClient client)
 {
     if (client.ServerVersion[28])
     {
         LegacyReservationStatus legacyReservationStatus = (LegacyReservationStatus)((IMailboxReplicationProxyService)client).IMailbox_ReserveResources(this.reservationId, this.mdbGuid, (int)RemoteReservation.ConvertReservationFlagsToLegacy(this.flags, false));
         if (legacyReservationStatus != LegacyReservationStatus.Success)
         {
             throw new CapacityExceededReservationException(string.Format("{0}:{1}:{2}", this.serverFQDN, this.mdbGuid, this.flags), 1);
         }
     }
 }