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)); }
/// <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)); }