public T Poll(long timeout, TimeUnit unit)
        {
            var request = QueuePollCodec.EncodeRequest(GetName(), unit.ToMillis(timeout));
            var result  = Invoke(request, m => QueuePollCodec.DecodeResponse(m).response);

            return(ToObject <T>(result));
        }
Esempio n. 2
0
        /// <inheritdoc />
        public async Task <T> TryDequeueAsync(TimeSpan timeToWait = default)
        {
            var timeToWaitMilliseconds = timeToWait.TimeoutMilliseconds(0);
            var requestMessage         = QueuePollCodec.EncodeRequest(Name, timeToWaitMilliseconds);
            var responseMessage        = await Cluster.Messaging.SendToPartitionOwnerAsync(requestMessage, PartitionId).CAF();

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

            return(ToObject <T>(response));
        }
        /// <inheritdoc />
        public async Task <T> PollAsync(TimeSpan timeToWait = default)
        {
            var timeToWaitMs = timeToWait.RoundedMilliseconds(); // codec: 0 = zero, -1 = infinite

            var requestMessage  = QueuePollCodec.EncodeRequest(Name, timeToWaitMs);
            var responseMessage = await Cluster.Messaging.SendToPartitionOwnerAsync(requestMessage, PartitionId).CfAwait();

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

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