20.2.1 クライアントインタセプタ

次の2種類のクライアントインタセプタとそれに対応するマネージャがあります。

クライアントインタセプタの詳細については,「19. ポータブルインタセプタの使用」を参照してください。

<この項の構成>
(1) BindInterceptor
(2) ClientRequestInterceptor

(1) BindInterceptor

BindInterceptorオブジェクトは,バインド前後にクライアント側で呼び出されるグローバルインタセプタです。

コードサンプル20-1 BindInterceptorインタフェース(Java)

package com.inprise.vbroker.InterceptorExt;
public interface BindInterceptor {
  public IORValue bind(IORValue ior,
        org.omg.CORBA.Object target,
        boolean rebind,
        Closure closure);
  public IORValue bind_failed(IORValue ior,
        org.omg.CORBA.Object target,
        Closure closure);
  public void bind_succeeded(IORValue ior,
        org.omg.CORBA.Object target,
        int Index,
        InterceptorManagerControl control,
        Closure closure);
  public void exception_occurred(IORValue ior,
        org.omg.CORBA.Object target,
        org.omg.CORBA.Environment env,
        Closure closure);
}

(2) ClientRequestInterceptor

ClientRequestInterceptorオブジェクトは,BindInterceptorオブジェクトのbind_succeeded呼び出し中に登録できます。またこれは,コネクション期間中アクティブのままです。このメソッドのうちの二つは,クライアントオブジェクトの起動前に呼び出されます。一つ(preinvoke_premarshal)は,パラメタがマーシャルされる前に,もう一つ(preinvoke_postmarshal)は,パラメタがマーシャルされたあとに呼び出されます。三つ目のメソッド(postinvoke)は,リクエストの完了後に呼び出されます。

コードサンプル20-2 ClientRequestInterceptorインタフェース(Java)

package com.inprise.vbroker.InterceptorExt;
public interface ClientRequestInterceptor {
  public void preinvoke_premarshal(org.omg.CORBA.Object target,
        String operation,
        ServiceContextListHolder service_contexts_holder,
        Closure closure);
  public void preinvoke_postmarshal(org.omg.CORBA.Object target,
        OutputStream payload,
        Closure closure);
  public void postinvoke(org.omg.CORBA.Object target,
        ServiceContext [ ] service_contexts,
        InputStream payload,
        org.omg.CORBA.Environment env,
        Closure closure);
  public void exception_occurred(org.omg.CORBA.Object target,
        org.omg.CORBA.Environment env,
        Closure closure);
}