コード例 #1
0
ファイル: OutgoingRequest.cs プロジェクト: yuwenyong/ice
        private protected Task InvokeAsync(IObjectPrx prx, OutgoingRequestFrame request, IProgress <bool>?progress,
                                           CancellationToken cancel)
        {
            var completed = new IObjectPrx.InvokeTaskCompletionCallback(progress, cancel);

            new OutgoingAsync(prx, completed, request, oneway: prx.IsOneway).Invoke(
                request.Operation, request.Context, synchronous: false);

            return(ReadVoidReturnValueAsync(prx, completed.Task));
コード例 #2
0
        /// <summary>Sends a request asynchronously.</summary>
        /// <param name="proxy">The proxy for the target Ice object.</param>
        /// <param name="request">The outgoing request frame for this invocation. Usually this request frame should have
        /// been created using the same proxy, however some differences are acceptable, for example proxy can have
        /// different endpoints.</param>
        /// <param name="oneway">When true, the request is sent as a oneway request. When false, it is sent as a
        /// two-way request.</param>
        /// <param name="progress">Sent progress provider.</param>
        /// <param name="cancel">A cancellation token that receives the cancellation requests.</param>
        /// <returns>A task holding the response frame.</returns>
        public static Task <IncomingResponseFrame> InvokeAsync(this IObjectPrx proxy,
                                                               OutgoingRequestFrame request,
                                                               bool oneway = false,
                                                               IProgress <bool>?progress = null,
                                                               CancellationToken cancel  = default)
        {
            var completed = new IObjectPrx.InvokeTaskCompletionCallback(progress, cancel);

            new OutgoingAsync(proxy, completed, request, oneway: oneway).Invoke(request.Operation, request.Context,
                                                                                synchronous: false);
            return(completed.Task);
        }