|
|
| Sun ONE Messaging and Collaboration イベント通知サービスマニュアル |
第 2 章 イベント通知サービス C API リファレンス
この章では、ENS C API について詳しく説明します。次の 3 つの節から構成されています。
パブリッシャ API
パブリッシャ API 関数リスト
ここでは、表 2-1 のリストにあるパブリッシャ関数について説明します。
表 2-1    ENS パブリッシャ API 関数リスト
定義/関数
説明
サブスクライバ API 関数リスト
ここでは、表 2-2 のリストにあるサブスクライバ関数について説明します。
表 2-2    ENS サブスクライバ API 関数リスト
定義/関数
説明
公開および購読ディスパッチャ関数リスト
ここでは、表 2-3のリストにある公開および購読ディスパッチャ関数について説明します。
表 2-3    ENS 公開および購読ディスパッチャ関数リスト
定義/関数
説明
パブリッシャ 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 が作成した既存のワーカとグループ化される。複数のスレッドをパブリッシャデータへ同時にアクセスさせないために使用する。呼び出し側が GDisp コンテキストを作成してディスパッチする場合にだけ使用できる
戻り値
新規有効サブスクライバ (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);
前へ 目次 索引 次へ
Copyright 2002 Sun Microsystems, Inc. All rights reserved.
最終更新日 2002 年 8 月 30 日