public int DrainTo <TE>(ICollection <TE> c) where TE : T { var request = QueueDrainToCodec.EncodeRequest(GetName()); var result = Invoke(request, m => QueueDrainToCodec.DecodeResponse(m).response); foreach (var data in result) { var e = ToObject <T>(data); c.Add((TE)e); } return(result.Count); }
/// <inheritdoc /> public async Task <int> DrainToAsync(ICollection <T> items) { var requestMessage = QueueDrainToCodec.EncodeRequest(Name); var responseMessage = await Cluster.Messaging.SendToPartitionOwnerAsync(requestMessage, PartitionId).CfAwait(); var response = QueueDrainToMaxSizeCodec.DecodeResponse(responseMessage).Response; foreach (var itemData in response) { items.Add(ToObject <T>(itemData)); } return(response.Count); }