public RiakResponse<RiakDocument[]> Find(RiakFindRequest request) { var connection = _connectionManager.GetNextConnection(); var threads = request.GetInternalRequests() .Select(r => _threadPool.QueueWorkItem(() => { connection.WriteWith(r, RequestMethod.Find); return connection.Read<FindResponse>(); })) .ToArray(); SmartThreadPool.WaitAll(threads); var responses = threads.Select(t => t.Result).ToArray(); var badResponses = responses.Where(r => r.ResponseCode == RiakResponseCode.Failed); return badResponses.Count() == 0 ? RiakResponse<RiakDocument[]>.WithoutErrors(responses.Select(x => x.Result.Content.First().ToDocument()).ToArray()) : RiakResponse<RiakDocument[]>.WithWarning(badResponses.Select(x => x.Messages.LastOrDefault()).ToArray(), responses.Select(x => { var content = x.Result.Content.FirstOrDefault(); return content == null ? null : x.Result.Content.FirstOrDefault().ToDocument(); }).ToArray()); }
public RiakResponse<RiakDocument[]> Find(Action<RiakFindRequest> predicate) { var request = new RiakFindRequest(); predicate(request); return Find(request); }