前へ     目次     索引     DocHome     次へ     
iPlanet Calendar Server 5.1 イベント通知サービスマニュアル



第 2 章   イベント通知サービス C API リファレンス


この章では、ENS C API について詳しく説明します。この章は次の 3 つの節に分かれています。



パブリッシャ API 関数リスト

この節では、表 2-1 に示すパブリッシャ関数を説明します。


表 2-1 ENS パブリッシャ API 関数リスト 

定義/関数  

説明  

publisher_t  

パブリッシャの定義  

publisher_cb_t  

非同期呼び出しをアクノリッジする汎用コールバック関数  

publisher_new_a  

新規非同期パブリッシャを作成する  

publisher_new_s  

新規同期パブリッシャを作成する  

publish_a  

非同期通知を通知サービスに送信する  

publish_s  

同期通知を通知サービスに送信する  

publisher_delete  

公開セッションを終了する  

publisher_get_subscriber  

パブリッシャの資格を使ってサブスクライバを作成する  

renl_create_publisher  

RENL を作成する。これにより end2end_ack の呼び出しを有効にする  

renl_cancel_publisher  

RENL をキャンセルする  



サブスクライバ API 関数リスト



この節では、表 2-2 に示すサブスクライバ関数を説明します。


表 2-2 ENS サブスクライバ API 関数リスト 

定義/関数  

説明  

subscriber_t  

サブスクライバの定義  

subscription_t  

購読の定義  

subscriber_cb_t  

非同期呼び出しをアクノリッジする汎用コールバック関数  

subscriber_notify_cb_t  

通知の受信時に呼び出される同期コールバック  

subscriber_new_a  

新規非同期サブスクライバを作成する  

subscriber_new_s  

新規同期サブスクライバを作成する  

subscribe_a  

非同期購読を設定する  

unsubscribe_a  

非同期購読をキャンセルする  

subscriber_delete  

サブスクライバを終了する  

subscriber_get_publisher  

サブスクライバの資格を使ってパブリッシャを作成する  

renl_create_subscriber  

RENL の購読部を作成する  

renl_cancel_subscriber  

RENL をキャンセルする  



公開および購読ディスパッチャ関数リスト



この節では、表 2-3 に示す公開と購読ディスパッチャ関数を説明します。


表 2-3 ENS 公開および購読ディスパッチャ関数リスト 

定義/関数  

説明  

pas_dispatcher_t  

公開と購読ディスパッチャの定義  

pas_dispatcher_new  

ディスパッチャを作成する  

pas_dispatcher_delete  

pas_dispatcher_new で作成したディスパッチャを破棄する  

pas_dispatch  

イベント通知環境のディスパッチループを開始する  

pas_shutdown  

pas_dispatch で開始したイベント通知環境のディスパッチループを中止する  



パブリッシャ API

パブリッシャ API は、次の 1 つの定義と 9 つの関数で構成されています。


publisher_t


目的
パブリッシャ


構文
typedef struct enc_struct publisher_t;


パラメータ
なし


戻り値
なし


publisher_cb_t


目的
非同期呼び出しをアクノリッジするために ENS が呼び出す汎用コールバック関数


構文
typedef void (*publisher_cb_t) (void *arg, int rc, void *data);


パラメータ




arg  

呼び出し元が渡すコンテキスト変数  

rc  

リターンコード  

data  

汎用、新しく作成されたコンテキストを含む  


戻り値
なし


publisher_new_a


目的
新規非同期パブリッシャを作成します。


構文
void publisher_new_a (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port,
publisher_cb_t cbdone,
void *cbarg);


パラメータ




disp  

pas_dispatcher_new が返す P&S スレッドプールコンテキスト  

worker  

アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。  

host  

通知サーバのホスト名  

port  

通知サーバのポート  

cbdone  

パブリッシャが正常に作成されたとき、または作成できなかったときに呼び出されるコールバック

cbdone には次の 3 つのパラメータがあります

  • cbarg
    最初の引数

  • 状態コード
    ゼロ以外の場合は、パブリッシャを作成できなかったことを示し、値は失敗の原因を示します

  • 新規活性化パブリッシャ

 

cbarg  

cbdone の最初の引数  


戻り値
なし。 cbdone コールバックの 3 番目の引数として、新規活性化パブリッシャを渡します。


publisher_new_s


目的
新規同期パブリッシャを作成します。


構文
publisher_t *publisher_new_s (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port);


パラメータ




disp  

pas_dispatcher_new が返す P&S スレッドプールコンテキスト  

worker  

アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。  

host  

通知サーバのホスト名  

port  

通知サーバのポート  


戻り値
新規活性化パブリッシャ (publisher_t)


publish_a


目的
非同期通知を通知サービスに送信します。


構文
void publish_a (publisher_t *publisher,
const char *event_ref,
const char *data,
unsigned int datalen,
publisher_cb_t cbdone,
publisher_cb_t end2end_ack,
void *cbarg,
unsigned long timeout);


パラメータ




publisher_t  

活性化パブリッシャ  

event_ref  

イベント参照。 修正されたリソースを識別する URI  

data  

イベントデータ。 通知メッセージの本体。 通知サービスに対して非透過で、通知サービスはイベントのサブスクライバへの中継だけを行います  

datalen  

バイト単位のデータの長さ  

cbdone  

通知サービスによってデータが受け入れられた場合、または受け入れられなかったと見なされた場合に呼び出されるコールバック。 通知の受け入れは、使用するプロトコルに依存します。プロトコルには、トランスポートアクノリッジメント (TCP) または独自のアクノリッジメント応答メカニズムのどちらを使用するかを選べます  

end2end_ack  

RENL 内のコンシューマピアからアクノリッジメントを受信した後に呼び出されるコールバック関数。 RENL のコンテキスト内でだけ使用されます  

cbarg  

cbdone または end2end_ack を呼び出すときの最初の引数  

timeout  

RENL の完了を待機する時間の長さ  


戻り値
なし


publish_s


目的
同期通知を通知サービスに送信します。


構文
int publish_s (publisher_t *publisher,
const char *event_ref,
const char *data,
unsigned int datalen);


パラメータ




publisher  

活性化パブリッシャ  

event_ref  

イベント参照。 修正されたリソースを識別する URI  

data  

イベントデータ。 通知メッセージの本体。 通知サービスに対して非透過で、通知サービスはイベントのサブスクライバへの中継だけを行います  

datalen  

バイト単位のデータの長さ  


戻り値
成功した場合はゼロ、失敗した場合は障害コード。 RENL の場合、コンシューマが通知を完全に処理し、それを正常にアクノリッジするまで、呼び出しは戻ってきません。


publisher_delete


目的
公開セッションを終了します。


構文
void publisher_delete (publisher_t *publisher);




publisher  

削除対象のパブリッシャ  

"> パラメータ



publisher  

削除対象のパブリッシャ  



戻り値
なし


publisher_get_subscriber


目的
パブリッシャの資格を使ってサブスクライバを作成します。


構文
struct subscriber_struct * publisher_get_subscriber(publisher_t *publisher);


パラメータ




publisher  

サブスクライバを作成するときに使用する資格を持つパブリッシャ  


戻り値
作成に成功した場合はそのサブスクライバ、失敗した場合は NULL。 作成に失敗した場合は、subscriber_new を使用してサブスクライバを作成します。


renl_create_publisher


目的
RENL を宣言します。これにより end2end_ack の呼び出しが有効になります。 この呼び出しが戻った後、指定されたパブリッシャおよびサブスクライバに一致するアクノリッジメント通知が受信されたときに、end2end_ack 引数が呼び出されます。


構文
void renl_create_publisher (publisher_t *publisher,
const char *renl_id,
const char *subscriber,
publisher_cb_t cbdone,
void *cbarg);


パラメータ




publisher  

活性化パブリッシャ  

renl_id  

一意の RENL 識別子。 これにより、2 つのピアの間に複数の RENL を設定できます  

subscriber  

認証されたピアの識別情報  

cbdone  

RENL が確立されたときに呼び出されるコールバック  

cbarg  

cbdone を呼び出すときの最初の引数  


戻り値
なし


renl_cancel_publisher


目的
RENL をキャンセルします。 キャンセルしても、通知は送信されます。ただし、クライアントのアクノリッジメントを受信しても、公開の end2end_ack 引数は呼び出されません。 パブリッシャを削除すると、すべての RENL が自動的に破棄されます。 このため、パブリッシャを削除する前に、この関数を呼び出して RENL 関連のメモリーを解放する必要はありません。


構文
void renl_cancel_publisher (renl_t *renl);


パラメータ




renl  

キャンセル対象の RENL  


戻り値
なし



サブスクライバ API

サブスクライバ API は、次の 2 つの定義と 10 の関数で構成されています。


subscriber_t


目的
サブスクライバ


構文
typedef struct enc_struct subscriber_t;


パラメータ
なし


戻り値
なし


subscription_t


目的
購読


構文
typedef struct subscription_struct subscription_t;


パラメータ
なし


戻り値
なし


subscriber_cb_t


目的
非同期呼び出しをアクノリッジするために ENS が呼び出す汎用コールバック関数


構文
typedef void (*subscriber_cb_t) (void *arg,
int rc,
void *data);


パラメータ




arg  

呼び出し元が渡すコンテキスト変数  

rc  

リターンコード  

data  

汎用、新しく作成されたコンテキストを含む  


戻り値
なし


subscriber_notify_cb_t


目的
通知の受信時に呼び出されるサブスクライバコールバック


構文
typedef void (*subscriber_notify_cb_t) (void *arg,
char *event,
char *data,
int datalen);


パラメータ




arg  

購読するために渡されるコンテキストポインタ (notify_arg)  

event  

イベント参照 (URI)。 通知イベント参照は購読と対応しています。ただし、uid などのイベント属性と呼ばれる情報を追加できます。  

data  

通知の本体。 MIME オブジェクト  

datalen  

データの長さ  


戻り値
成功した場合はゼロ、失敗した場合はゼロ以外の値


subscriber_new_a


目的
新規非同期サブスクライバを作成します。


構文
void subscriber_new_a (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port,
subscriber_cb_t cbdone,
void *cbarg);


パラメータ




disp  

pas_dispatcher_new が返すスレッドディスパッチャコンテキスト  

worker  

アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのサブスクライバセッションをサービスする既存のワーカーとグループ化されます。また、複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。 呼び出し元が GDisp コンテキストを作成してディスパッチする場合にだけ使用できます  

host  

通知サーバのホスト名または IP アドレス  

port  

購読サービスのポート番号  

cbdone  

サブスクライバセッションが活性化し、購読が発行されるときに呼び出されるコールバック

cbdone には次の 3 つのパラメータがあります

  • cbarg
    最初の引数

  • 状態コード
    ゼロ以外の場合は、サブスクライバを作成できなかったことを示し、値は失敗の原因を示します

  • 新規活性化サブスクライバ (subscriber_t)

 

cbarg  

cbdone の最初の引数  


戻り値
なし。 cbdone コールバックの 3 番目の引数として、新規活性化サブスクライバを渡します。


subscriber_new_s


目的
新規同期サブスクライバを作成します。


構文
subscriber_t *subscriber_new_s (pas_dispatcher_t *disp,
const char *host,
unsigned short port);


パラメータ




disp  

pas_dispatcher_new が返す公開および購読ディスパッチャ  

worker  

アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。  

host  

通知サーバのホスト名または IP アドレス  

port  

購読サービスのポート番号  


戻り値
新規活性化サブスクライバ (subscriber_t)


subscribe_a


目的

非同期購読を設定します。


構文
void subscribe_a (subscriber_t *subscriber,
const char *event_ref,
subscriber_notify_cb_t notify_cb,
void *notify_arg,
subscriber_cb_t cbdone,
void *cbarg):


パラメータ




subscriber  

サブスクライバ  

event_ref  

イベント参照。 イベントのソースを識別する URI  

notify_cb  

この購読に一致する通知を受信したときに呼び出されるコールバック  

notify_arg  

notify_cb の最初の引数。 購読が活性な間、任意のスレッドから任意のタイミングで呼び出されます。  

cbdone  

購読の解除が完了したときに呼び出されます。 次の 3 つのパラメータがあります。

  • cbarg (以下の説明を参照)

  • 状態コード

  • 非透過購読オブジェクトへのポインタ

 

cbarg  

cbdone の最初の引数  


戻り値
なし


unsubscribe_a


目的

非同期購読をキャンセルします。


構文
void unsubscribe_a (subscriber_t *subscriber,
subscription_t *subscription,
subscriber_cb_t cbdone,
void *cbarg);


パラメータ




subscriber  

消滅するサブスクライバ  

subscription  

キャンセル対象の購読  

cbdone  

購読の解除が完了したときに呼び出されます。 次の 3 つのパラメータがあります。

  • cbarg (以下の説明を参照)

  • 状態コード

  • 非透過購読オブジェクトへのポインタ

 

cbarg  

cbdone の最初の引数  


戻り値
なし


subscriber_delete


目的
サブスクライバを削除します。


構文
void subscriber_delete (subscriber_t *subscriber);


パラメータ




subscriber  

削除対象のサブスクライバ  


戻り値

なし


subscriber_get_publisher


目的
サブスクライバの資格を使ってパブリッシャを作成します。


構文
struct publisher_struct *subscriber_get_publisher (subscriber_t *subscriber);


パラメータ




subscriber  

パブリッシャを作成するときに使用する資格を持つサブスクライバ  


戻り値
作成に成功した場合はそのパブリッシャ、失敗した場合は NULL。 作成に失敗した場合は、publisher_new を使用してサブスクライバを作成します。


renl_create_subscriber


目的
RENL の購読部を作成します。


構文
renl_t *renl_create_subscriber (subscription_t *subscription,
const char *renl_id,
const char *publisher);


パラメータ




subscription  

購読  

renl_id  

一意の RENL 識別子。 これにより、2 つのピアの間に複数の RENL を設定できます  

publisher  

認証されたピアの識別情報  


戻り値
非透過 RENL オブジェクト


renl_cancel_subscriber


目的
RENL をキャンセルします。 ただし、購読はキャンセルしません。 この購読に受信した通知をこれ以上アクノリッジしないように、ENS に伝えます。 この関数によって、RENL オブジェクトが破棄され、アプリケーションはこの RENL をそれ以降使用できなくなります。 購読をキャンセルすると、すべての RENL は自動的に破棄されます。サブスクライバを削除する前に、この関数を呼び出して RENL 関連のメモリーを解放する必要はありません。


構文
void renl_cancel_subscriber (renl_t *renl);


パラメータ




renl  

キャンセル対象の RENL  


戻り値
なし



公開と購読ディスパッチャ API

公開および購読ディスパッチャ API は、次の 1 つの定義と 4 つの関数で構成されています。


pas_dispatcher_t


目的
公開および購読ディスパッチャ


構文
typedef struct pas_dispatcher_struct pas_dispatcher_t;


パラメータ
なし


戻り値
なし


pas_dispatcher_new


目的
ディスパッチャを作成またはアドバタイズします。


構文
pas_dispatcher_t *pas_dispatcher_new (void *disp);


パラメータ




dispcx  

ディスパッチャコンテキスト。 NULL の場合、通知のディスパッチを開始するには、アプリケーションから pas_dispatch を呼び出す必要があります。

NULL 以外の場合、ディスパッチャ は libasync ディスパッチャです。  


戻り値
パブリッシャまたはサブスクライバを作成するときに使用するディスパッチャ (pas_dispatcher_t)


pas_dispatcher_delete


目的
pas_dispatcher_new で作成したディスパッチャを削除します。


構文
void pas_dispatcher_delete (pas_dispatcher_t *disp);


パラメータ




disp  

イベント通知クライアント環境  


戻り値
なし


pas_dispatch


目的
イベント通知環境のディスパッチループを開始します。 アプリケーションで自身のスレッドプールが使用されている場合は効果はありません。


構文
void pas_dispatch (pas_dispatcher_t *disp);


パラメータ




disp  

新規ディスパッチャ  


戻り値
なし


pas_shutdown


目的
pas_dispatch で開始したイベント通知環境のディスパッチループを停止します。 アプリケーションから指定されたディスパッチャが pas_dispatcher_new に渡された場合は効果はありません。


構文
void pas_shutdown (pas_dispatcher_t *disp);


パラメータ




disp  

停止対象のディスパッチャコンテキスト  


戻り値

なし


前へ     目次     索引     DocHome     次へ     
Copyright (C) 2002 Sun Microsystems, Inc. Some preexisting portions Copyright (C) 2000 Netscape Communications Corp. All rights reserved.

最終更新日: 2002 年 1 月 31 日