// Must call in a lock(this.ThisLock). private MessageAttemptInfo AddToWindow(Message message, bool isLast, object state) { MessageAttemptInfo attemptInfo = default(MessageAttemptInfo); long sequenceNumber; sequenceNumber = _windowStart + _window.Count; WsrmUtilities.AddSequenceHeader(_reliableMessagingVersion, message, _id, sequenceNumber, isLast); if (_requestAcks && (_window.Count == _windowSize - 1 || QuotaRemaining == 1)) // can't add any more { message.Properties.AllowOutputBatching = false; WsrmUtilities.AddAckRequestedHeader(_reliableMessagingVersion, message, _id); } if (_window.Count == 0) { _retryTimer.Set(Timeout); } _window.Add(message, Now, state); QuotaRemaining--; if (isLast) { Last = sequenceNumber; } int index = (int)(sequenceNumber - _windowStart); attemptInfo = new MessageAttemptInfo(_window.GetMessage(index), sequenceNumber, 0, state); return(attemptInfo); }
// Must call in a lock(this.ThisLock). MessageAttemptInfo AddToWindow(Message message, bool isLast, object state) { MessageAttemptInfo attemptInfo = default(MessageAttemptInfo); Int64 sequenceNumber; sequenceNumber = this.windowStart + this.window.Count; WsrmUtilities.AddSequenceHeader(this.reliableMessagingVersion, message, this.id, sequenceNumber, isLast); if (this.requestAcks && (this.window.Count == this.windowSize - 1 || this.quotaRemaining == 1)) // can't add any more { message.Properties.AllowOutputBatching = false; WsrmUtilities.AddAckRequestedHeader(this.reliableMessagingVersion, message, this.id); } if (this.window.Count == 0) { this.retryTimer.Set(this.Timeout); } this.window.Add(message, Now, state); this.quotaRemaining--; if (isLast) { this.last = sequenceNumber; } int index = (int)(sequenceNumber - this.windowStart); attemptInfo = new MessageAttemptInfo(this.window.GetMessage(index), sequenceNumber, 0, state); return(attemptInfo); }