Esempio n. 1
0
        public bool ObtainUserSubmissionTokens(string mailboxServer, int mailboxServerVersion, Guid mailboxGuid, int recipientCount, ADObjectId throttlingPolicyId, OrganizationId organizationId, string clientInfo)
        {
            Unlimited <uint> userSubmissionQuota = MailboxThrottle.GetUserSubmissionQuota(throttlingPolicyId, organizationId);

            MailboxThrottle.tracer.TraceDebug <Guid, Unlimited <uint>, int>(0L, "Submission quota for mailbox <{0}> is {1}, requesting {2} tokens.", mailboxGuid, userSubmissionQuota, recipientCount);
            return(this.ObtainTokens(mailboxServer, mailboxServerVersion, mailboxGuid, RequestedAction.UserMailSubmission, recipientCount, userSubmissionQuota, clientInfo));
        }
Esempio n. 2
0
        private bool ObtainTokensViaOldApi(string mailboxServer, Guid mailboxGuid, int requestedTokenCount, int quota)
        {
            ThrottlingRpcClientImpl rpcClient = this.GetRpcClient(mailboxServer);
            ThrottlingRpcResult     result    = rpcClient.ObtainSubmissionTokens(mailboxGuid, requestedTokenCount, quota, 0);

            return(MailboxThrottle.ThrottlingRpcResultToBoolean(result));
        }
Esempio n. 3
0
        private bool ObtainTokensViaNewApi(string mailboxServer, Guid mailboxGuid, RequestedAction requestedAction, int requestedTokenCount, int quota, string clientInfo)
        {
            ThrottlingRpcClientImpl rpcClient = this.GetRpcClient(mailboxServer);
            ThrottlingRpcResult     result    = rpcClient.ObtainTokens(mailboxGuid, requestedAction, requestedTokenCount, quota, clientInfo);

            return(MailboxThrottle.ThrottlingRpcResultToBoolean(result));
        }
Esempio n. 4
0
        private bool ObtainTokens(string mailboxServer, int mailboxServerVersion, Guid mailboxGuid, RequestedAction requestedAction, int requestedTokenCount, Unlimited <uint> totalTokenCount, string clientInfo)
        {
            this.ThrowIfInvalid(mailboxServer, requestedTokenCount, totalTokenCount);
            int  quota;
            bool flag;

            if (MailboxThrottle.TryAnswerWithoutRpc(mailboxGuid, requestedTokenCount, totalTokenCount, out quota, out flag))
            {
                return(flag);
            }
            if (mailboxServerVersion >= MailboxThrottle.NewRpcVersion)
            {
                flag = this.ObtainTokensViaNewApi(mailboxServer, mailboxGuid, requestedAction, requestedTokenCount, quota, clientInfo);
                this.testabilityLastCallUsedNewRpc = true;
            }
            else if (requestedAction == RequestedAction.UserMailSubmission)
            {
                flag = this.ObtainTokensViaOldApi(mailboxServer, mailboxGuid, requestedTokenCount, quota);
                this.testabilityLastCallUsedNewRpc = false;
            }
            else
            {
                flag = true;
                this.testabilityLastCallUsedNewRpc = false;
            }
            if (!flag)
            {
                ThrottlingRpcClientImpl.EventLogger.LogEvent(ThrottlingClientEventLogConstants.Tuple_MailboxThrottled, mailboxGuid.ToString(), new object[]
                {
                    mailboxGuid,
                    mailboxServer,
                    requestedAction,
                    requestedTokenCount,
                    totalTokenCount,
                    clientInfo,
                    Process.GetCurrentProcess().ProcessName
                });
            }
            return(flag);
        }