示例#1
0
        public ISearchResponse <TResult> Search <T, TResult>(ISearchRequest request)
            where T : class
            where TResult : class
        {
            var pathInfo = request
                           .ToPathInfo(_connectionSettings)
                           .DeserializationState(this.CreateSearchDeserializer <T, TResult>(request));

            var status = this.RawDispatch.SearchDispatch <SearchResponse <TResult> >(pathInfo, request);

            return(status.Success ? status.Response : CreateInvalidInstance <SearchResponse <TResult> >(status));
        }
示例#2
0
        public Task <ISearchResponse <TResult> > SearchAsync <T, TResult>(ISearchRequest request)
            where T : class
            where TResult : class
        {
            var pathInfo = request
                           .ToPathInfo(_connectionSettings)
                           .DeserializationState(this.CreateSearchDeserializer <T, TResult>(request));

            return(this.RawDispatch.SearchDispatchAsync <SearchResponse <TResult> >(pathInfo, request)
                   .ContinueWith <ISearchResponse <TResult> >(t => {
                if (t.IsFaulted)
                {
                    throw t.Exception.Flatten().InnerException;
                }

                return t.Result.Success
                                                ? t.Result.Response
                                                : CreateInvalidInstance <SearchResponse <TResult> >(t.Result);
            }));
        }