Exemple #1
0
 /// <summary>
 /// 指定されたメソッド呼び出しの状態を追加します。
 /// </summary>
 /// <param name="call">呼び出しオブジェクト</param>
 /// <param name="state">状態オブジェクト</param>
 private static void AddState(object call, GrpcCallState state)
 {
     lock (s_Calls)
     {
         s_Calls[call] = state;
     }
 }
Exemple #2
0
 /// <summary>
 /// 指定されたメソッド呼び出しの状態を取得します。
 /// </summary>
 /// <param name="call">呼び出しオブジェクト</param>
 /// <param name="state">状態オブジェクト</param>
 /// <returns>取得できた場合、true を返します。</returns>
 internal static bool TryGetStateMain(object call, out GrpcCallState state)
 {
     lock (s_Calls)
     {
         return(s_Calls.TryGetValue(call, out state));
     }
 }
Exemple #3
0
        /// <summary>
        /// 指定されたメソッド呼び出しを登録します。
        /// </summary>
        /// <typeparam name="TRequest">リクエストの型</typeparam>
        /// <typeparam name="TResponse">レスポンスの型</typeparam>
        /// <param name="call">呼び出しオブジェクト</param>
        /// <param name="method">メソッド</param>
        /// <param name="host">ホスト</param>
        /// <param name="options">オプション</param>
        /// <param name="performanceListener">パフォーマンスリスナー</param>
        /// <returns>呼び出しオブジェクト</returns>
        internal static AsyncServerStreamingCall <TResponse> Regist <TRequest, TResponse>(AsyncServerStreamingCall <TResponse> call, Method <TRequest, TResponse> method, string host, CallOptions options, GrpcClientPerformanceListener performanceListener)
        {
            GrpcCallInvokerContext.Releaser releaser = new GrpcCallInvokerContext.Releaser(delegate()
            {
                call.Dispose();
            });

            GrpcCallState state = new GrpcCallState(method, host, options);

            AsyncServerStreamingCall <TResponse> wrap = new AsyncServerStreamingCall <TResponse>(
                new ResponseStreamReader <TResponse>(call.ResponseStream, method, host, options, state.OnEndResponse, performanceListener)
                , call.ResponseHeadersAsync
                , call.GetStatus
                , call.GetTrailers
                , releaser.Dispose
                );

            releaser.Target = wrap;

            GrpcCallInvokerContext.AddState(wrap, state);

            return(wrap);
        }
Exemple #4
0
 /// <summary>
 /// 指定されたメソッド呼び出しの状態を取得します。
 /// </summary>
 /// <typeparam name="TRequest">リクエストの型</typeparam>
 /// <typeparam name="TResponse">レスポンスの型</typeparam>
 /// <param name="call">呼び出しオブジェクト</param>
 /// <param name="state">状態オブジェクト</param>
 /// <returns>取得できた場合、true を返します。</returns>
 internal static bool TryGetState <TRequest, TResponse>(AsyncDuplexStreamingCall <TRequest, TResponse> call, out GrpcCallState state)
 {
     return(TryGetStateMain(call, out state));
 }
Exemple #5
0
 /// <summary>
 /// 指定されたメソッド呼び出しの状態を取得します。
 /// </summary>
 /// <param name="call">呼び出しオブジェクト</param>
 /// <param name="state">状態オブジェクト</param>
 /// <returns>取得できた場合、true を返します。</returns>
 internal static bool TryGetState <TResponse>(AsyncUnaryCall <TResponse> call, out GrpcCallState state)
 {
     return(TryGetStateMain(call, out state));
 }