/// <summary> /// Query. /// Invokes the 'query/first' endpoint of the api. /// </summary> /// <typeparam name="TEntity">The entity type.</typeparam> /// <typeparam name="TCriteria">The criteira type</typeparam> /// <param name="request">The <see cref="QueryFirstRequest{TCriteria}"/>.</param> /// <param name="cancellationToken">The <see cref="CancellationToken"/>.</param> /// <returns>The first match entity.</returns> public virtual async Task <TEntity> QueryFirstAsync <TEntity, TCriteria>(QueryFirstRequest <TCriteria> request, CancellationToken cancellationToken = default) where TEntity : class where TCriteria : IQueryCriteria, new() { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(await this.Invoke <QueryFirstRequest <TCriteria>, TEntity>(request, cancellationToken)); }
public static LogEntry For(QueryFirstRequest request) { LogEntry entry = new LogEntry("QueryFirstRequest"); entry.Add("RequestHeader", For(request.RequestHeader)); entry.Add("View", For(request.View)); entry.Add("NodeTypes", For(request.NodeTypes)); entry.Add("Filter", For(request.Filter)); entry.Add("MaxDataSetsToReturn", For(request.MaxDataSetsToReturn)); entry.Add("MaxReferencesToReturn", For(request.MaxReferencesToReturn)); return(entry); }
public async Task QueryFirstAsync() { var response = new QueryFirstResponse(); var request = new QueryFirstRequest(); var channel = new TestRequestChannel(response); var ret = await channel.QueryFirstAsync(request); ret .Should().BeSameAs(response); channel.Request .Should().BeSameAs(request); }
/// <summary> /// Issues a Query request to a View. /// </summary> /// <param name="channel">A instance of <see cref="IRequestChannel"/>.</param> /// <param name="request">A <see cref="QueryFirstRequest"/>.</param> /// <returns>A <see cref="Task"/> representing the asynchronous operation that returns a <see cref="QueryFirstResponse"/>.</returns> public static async Task <QueryFirstResponse> QueryFirstAsync(this IRequestChannel channel, QueryFirstRequest request) { if (request == null) { throw new ArgumentNullException("request"); } return((QueryFirstResponse)await channel.RequestAsync(request).ConfigureAwait(false)); }
/// <summary> /// Begins an asynchronous invocation of the QueryFirst service. /// </summary> public IAsyncResult BeginQueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, AsyncCallback callback, object asyncState) { QueryFirstRequest request = new QueryFirstRequest(); request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginQueryFirst(new QueryFirstMessage(request), callback, asyncState); }
/// <summary> /// Invokes the QueryFirst service. /// </summary> public virtual ResponseHeader QueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult) { QueryFirstRequest request = new QueryFirstRequest(); QueryFirstResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; } else { QueryFirstResponseMessage responseMessage = InnerChannel.QueryFirst(new QueryFirstMessage(request)); if (responseMessage == null || responseMessage.QueryFirstResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.QueryFirstResponse; ValidateResponse(response.ResponseHeader); } queryDataSets = response.QueryDataSets; continuationPoint = response.ContinuationPoint; parsingResults = response.ParsingResults; diagnosticInfos = response.DiagnosticInfos; filterResult = response.FilterResult; } finally { RequestCompleted(request, response, "QueryFirst"); } return response.ResponseHeader; }
/// <summary> /// Issues a Query request to a View. /// </summary> /// <param name="channel">A instance of <see cref="IRequestChannel"/>.</param> /// <param name="request">A <see cref="QueryFirstRequest"/>.</param> /// <returns>A <see cref="Task"/> representing the asynchronous operation that returns a <see cref="QueryFirstResponse"/>.</returns> public static async Task <QueryFirstResponse> QueryFirstAsync(this IRequestChannel channel, QueryFirstRequest request, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return((QueryFirstResponse)await channel.RequestAsync(request, token).ConfigureAwait(false)); }
/// <summary> /// Initializes the message with the body. /// </summary> public QueryFirstMessage(QueryFirstRequest QueryFirstRequest) { this.QueryFirstRequest = QueryFirstRequest; }