protected override async Task <DateTime> OnRenewLockAsync(string lockToken) { DateTime lockedUntilUtc = DateTime.MinValue; try { // Create an AmqpRequest Message to renew lock AmqpRequestMessage requestMessage = AmqpRequestMessage.CreateRequest(ManagementConstants.Operations.RenewLockOperation, this.OperationTimeout, null); requestMessage.Map[ManagementConstants.Properties.LockTokens] = new[] { new Guid(lockToken) }; AmqpResponseMessage response = await this.ExecuteRequestResponseAsync(requestMessage).ConfigureAwait(false); if (response.StatusCode == AmqpResponseStatusCode.OK) { IEnumerable <DateTime> lockedUntilUtcTimes = response.GetValue <IEnumerable <DateTime> >(ManagementConstants.Properties.Expirations); lockedUntilUtc = lockedUntilUtcTimes.First(); } else { throw response.ToMessagingContractException(); } } catch (Exception exception) { throw AmqpExceptionHelper.GetClientException(exception); } return(lockedUntilUtc); }
protected override async Task <Stream> OnGetStateAsync() { try { AmqpRequestMessage amqpRequestMessage = AmqpRequestMessage.CreateRequest(ManagementConstants.Operations.GetSessionStateOperation, this.OperationTimeout, null); amqpRequestMessage.Map[ManagementConstants.Properties.SessionId] = this.SessionId; AmqpResponseMessage amqpResponseMessage = await this.InnerMessageReceiver.ExecuteRequestResponseAsync(amqpRequestMessage).ConfigureAwait(false); Stream sessionState = null; if (amqpResponseMessage.StatusCode == AmqpResponseStatusCode.OK) { if (amqpResponseMessage.Map[ManagementConstants.Properties.SessionState] != null) { sessionState = new BufferListStream(new[] { amqpResponseMessage.GetValue <ArraySegment <byte> >(ManagementConstants.Properties.SessionState) }); } } return(sessionState); } catch (AmqpException amqpException) { throw AmqpExceptionHelper.ToMessagingContract(amqpException.Error); } }
protected override async Task OnRenewLockAsync() { try { AmqpRequestMessage amqpRequestMessage = AmqpRequestMessage.CreateRequest(ManagementConstants.Operations.RenewSessionLockOperation, this.OperationTimeout, null); amqpRequestMessage.Map[ManagementConstants.Properties.SessionId] = this.SessionId; AmqpResponseMessage amqpResponseMessage = await this.InnerMessageReceiver.ExecuteRequestResponseAsync(amqpRequestMessage).ConfigureAwait(false); if (amqpResponseMessage.StatusCode == AmqpResponseStatusCode.OK) { this.LockedUntilUtc = amqpResponseMessage.GetValue <DateTime>(ManagementConstants.Properties.Expiration); } } catch (AmqpException amqpException) { throw AmqpExceptionHelper.ToMessagingContract(amqpException.Error); } }