ServerStreaming の場合
ServerStreaming の場合、ResponseStream からのデータ読み取りが完了していればステータスを取得できました。
- クライアント:RPC メソッドを呼び出す。戻り値として call オブジェクトを取得できる。
- クライアント:call オブジェクトの ResponseStream からのデータ読み取りが終了する。
- クライアント:call オブジェクトの GetStatus メソッドでステータスを取得できる。GetTrailers メソッドでトレーラーを取得できる。InvalidOperationException はスローされない。
ClientStreaming の場合
ClientStreaming の場合、CompleteAsync の直後ではステータスを取得できないことがあります。ResponseAsync または ResponseHeadersAsync が完了した後であればステータスを取得できました。
- クライアント:RPC メソッドを呼び出す。戻り値として call オブジェクトを取得できる。
- クライアント:call オブジェクトの RequestStream の CompleteAsync メソッドを呼び出す。
- サーバー:RequestStream からのデータ読み取りが終了する。RPC メソッドの処理を終わらせ、戻り値を返す。
- クライアント:call オブジェクトの ResponseAsync が完了する。または ResponseHeadersAsync が完了する。
- クライアント:call オブジェクトの GetStatus メソッドでステータスを取得できる。GetTrailers メソッドでトレーラーを取得できる。InvalidOperationException はスローされない。
Unary(非同期呼び出し)の場合
非同期呼び出しの Unary の場合、ResponseAsync または ResponseHeadersAsync が完了した後であればステータスを取得できました。
- クライアント:RPC メソッドを呼び出す。戻り値として call オブジェクトを取得できる。
- クライアント:call オブジェクトの ResponseAsync が完了する。または ResponseHeadersAsync が完了する。
- クライアント:call オブジェクトの GetStatus メソッドでステータスを取得できる。GetTrailers メソッドでトレーラーを取得できる。InvalidOperationException はスローされない。
0 件のコメント:
コメントを投稿