Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド

[目次][索引][前へ][次へ]

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);
}