/// <exception cref="System.Exception"></exception>
 public virtual T Peek(long timeout, TimeUnit unit)
 {
     var request = TransactionalQueuePeekCodec.EncodeRequest(GetName(), GetTransactionId(), GetThreadId(),
         unit.ToMillis(timeout));
     var result = Invoke(request, m => TransactionalQueuePeekCodec.DecodeResponse(m).response);
     return ToObject<T>(result);
 }
        public async Task <TItem> TryPeekAsync(TimeSpan timeToWait)
        {
            var timeToWaitMilliseconds = timeToWait.TimeoutMilliseconds(0);
            var requestMessage         = TransactionalQueuePeekCodec.EncodeRequest(Name, TransactionId, ContextId, timeToWaitMilliseconds);
            var responseMessage        = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CAF();

            var response = TransactionalQueuePeekCodec.DecodeResponse(responseMessage).Response;

            return(ToObject <TItem>(response));
        }
        public async Task <TItem> PeekAsync(TimeSpan timeToWait = default)
        {
            // codec wants -1 for infinite, 0 for zero
            var timeToWaitMs = timeToWait.RoundedMilliseconds();

            var requestMessage  = TransactionalQueuePeekCodec.EncodeRequest(Name, TransactionId, ContextId, timeToWaitMs);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CfAwait();

            var response = TransactionalQueuePeekCodec.DecodeResponse(responseMessage).Response;

            return(ToObject <TItem>(response));
        }