Sun ONE logo     前へ     目次     索引     次へ     
Sun ONE Messaging and Collaboration イベント通知サービスマニュアル



第 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_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 が作成した既存のワーカとグループ化される。複数のスレッドをパブリッシャデータへ同時にアクセスさせないために使用する。呼び出し側が GDisp コンテキストを作成してディスパッチする場合にだけ使用できる  

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_argの最初の引数。購読が有効な間、任意のスレッドから任意のタイミングで呼び出される  

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  

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


戻り値

なし


前へ     目次     索引     次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.

最終更新日 2002 年 8 月 30 日