前へ 目次 索引 DocHome 次へ |
iPlanet Calendar Server 5.1 イベント通知サービスマニュアル |
第 2 章 イベント通知サービス C API リファレンス
この章では、ENS C API について詳しく説明します。この章は次の 3 つの節に分かれています。
パブリッシャ API
パブリッシャ API 関数リスト
この節では、表 2-1 に示すパブリッシャ関数を説明します。
サブスクライバ API 関数リスト
この節では、表 2-2 に示すサブスクライバ関数を説明します。
公開および購読ディスパッチャ関数リスト
この節では、表 2-3 に示す公開と購読ディスパッチャ関数を説明します。
パブリッシャ API は、次の 1 つの定義と 9 つの関数で構成されています。
publisher_t
構文
typedef struct enc_struct publisher_t;
目的
非同期呼び出しをアクノリッジするために ENS が呼び出す汎用コールバック関数
構文
typedef void (*publisher_cb_t) (void *arg, int rc, void *data);
構文
void publisher_new_a (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port,
publisher_cb_t cbdone,
void *cbarg);
アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。
戻り値
なし。 cbdone コールバックの 3 番目の引数として、新規活性化パブリッシャを渡します。
構文
publisher_t *publisher_new_s (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port);
アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。
構文
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);
構文
int publish_s (publisher_t *publisher,
const char *event_ref,
const char *data,
unsigned int datalen);
イベントデータ。 通知メッセージの本体。 通知サービスに対して非透過で、通知サービスはイベントのサブスクライバへの中継だけを行います
戻り値
成功した場合はゼロ、失敗した場合は障害コード。 RENL の場合、コンシューマが通知を完全に処理し、それを正常にアクノリッジするまで、呼び出しは戻ってきません。
構文
void publisher_delete (publisher_t *publisher);
">
パラメータ
戻り値
なし
目的
パブリッシャの資格を使ってサブスクライバを作成します。
構文
struct subscriber_struct * publisher_get_subscriber(publisher_t *publisher);
戻り値
作成に成功した場合はそのサブスクライバ、失敗した場合は NULL。 作成に失敗した場合は、subscriber_new を使用してサブスクライバを作成します。
目的
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);
目的
RENL をキャンセルします。 キャンセルしても、通知は送信されます。ただし、クライアントのアクノリッジメントを受信しても、公開の end2end_ack 引数は呼び出されません。 パブリッシャを削除すると、すべての RENL が自動的に破棄されます。 このため、パブリッシャを削除する前に、この関数を呼び出して RENL 関連のメモリーを解放する必要はありません。
構文
void renl_cancel_publisher (renl_t *renl);
サブスクライバ API は、次の 2 つの定義と 10 の関数で構成されています。
subscriber_t
構文
typedef struct enc_struct subscriber_t;
構文
typedef struct subscription_struct subscription_t;
目的
非同期呼び出しをアクノリッジするために ENS が呼び出す汎用コールバック関数
構文
typedef void (*subscriber_cb_t) (void *arg,
int rc,
void *data);
構文
typedef void (*subscriber_notify_cb_t) (void *arg,
char *event,
char *data,
int datalen);
イベント参照 (URI)。 通知イベント参照は購読と対応しています。ただし、uid などのイベント属性と呼ばれる情報を追加できます。
構文
void subscriber_new_a (pas_dispatcher_t *disp,
void *worker,
const char *host,
unsigned short port,
subscriber_cb_t cbdone,
void *cbarg);
アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのサブスクライバセッションをサービスする既存のワーカーとグループ化されます。また、複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。 呼び出し元が GDisp コンテキストを作成してディスパッチする場合にだけ使用できます
戻り値
なし。 cbdone コールバックの 3 番目の引数として、新規活性化サブスクライバを渡します。
構文
subscriber_t *subscriber_new_s (pas_dispatcher_t *disp,
const char *host,
unsigned short port);
アプリケーションワーカー。 NULL 以外の場合、ENS によって作成されたこのパブリッシャセッションをサービスする既存のワーカーとグループ化されます。複数のスレッドがパブリッシャデータに同時にアクセスしないようにするために使用します。
戻り値
新規活性化サブスクライバ (subscriber_t)
構文
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):
構文
void unsubscribe_a (subscriber_t *subscriber,
subscription_t *subscription,
subscriber_cb_t cbdone,
void *cbarg);
構文
void subscriber_delete (subscriber_t *subscriber);
目的
サブスクライバの資格を使ってパブリッシャを作成します。
構文
struct publisher_struct *subscriber_get_publisher (subscriber_t *subscriber);
戻り値
作成に成功した場合はそのパブリッシャ、失敗した場合は NULL。 作成に失敗した場合は、publisher_new を使用してサブスクライバを作成します。
構文
renl_t *renl_create_subscriber (subscription_t *subscription,
const char *renl_id,
const char *publisher);
目的
RENL をキャンセルします。 ただし、購読はキャンセルしません。 この購読に受信した通知をこれ以上アクノリッジしないように、ENS に伝えます。 この関数によって、RENL オブジェクトが破棄され、アプリケーションはこの RENL をそれ以降使用できなくなります。 購読をキャンセルすると、すべての RENL は自動的に破棄されます。サブスクライバを削除する前に、この関数を呼び出して RENL 関連のメモリーを解放する必要はありません。
構文
void renl_cancel_subscriber (renl_t *renl);
公開および購読ディスパッチャ API は、次の 1 つの定義と 4 つの関数で構成されています。
構文
typedef struct pas_dispatcher_struct pas_dispatcher_t;
構文
pas_dispatcher_t *pas_dispatcher_new (void *disp);
ディスパッチャコンテキスト。 NULL の場合、通知のディスパッチを開始するには、アプリケーションから pas_dispatch を呼び出す必要があります。
戻り値
パブリッシャまたはサブスクライバを作成するときに使用するディスパッチャ (pas_dispatcher_t)
目的
pas_dispatcher_new で作成したディスパッチャを削除します。
構文
void pas_dispatcher_delete (pas_dispatcher_t *disp);
目的
イベント通知環境のディスパッチループを開始します。 アプリケーションで自身のスレッドプールが使用されている場合は効果はありません。
構文
void pas_dispatch (pas_dispatcher_t *disp);
目的
pas_dispatch で開始したイベント通知環境のディスパッチループを停止します。 アプリケーションから指定されたディスパッチャが pas_dispatcher_new に渡された場合は効果はありません。
構文
void pas_shutdown (pas_dispatcher_t *disp);
前へ 目次 索引 DocHome 次へ
Copyright (C) 2002 Sun Microsystems, Inc. Some preexisting portions Copyright (C) 2000 Netscape Communications Corp. All rights reserved.
最終更新日: 2002 年 1 月 31 日