(1)概要
コンシューマがサプライヤからイベントデータを受信する場合、イベントチャネル上のCOSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULLメソッドを呼び出します。イベントチャネルは、ユーザがサプライヤ上に作成したSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを呼び出します。
本概要を以下の図に示します。

(2)サプライヤの作成
サプライヤは、イベントチャネルからイベントデータの要求を受け取るために、SERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを実装します。イベントチャネルは、サプライヤ上のSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを呼び出し、サプライヤにイベントデータを要求します。
サプライヤのSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドを実装するまでの手続きの例、および処理の流れを以下に示します。
[COBOLによるPullモデルのサプライヤ]
PROGRAM-ID. "FUNC".
...
CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-SUPPLIERS" USING
EVENTCHOBJ
ENV
SUPPLIER. /* 1 */
CALL "COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PULL-CONSUMER" USING
SUPPLIER
ENV
PROXYPULL. /* 2 */
CALL "COSEVENTCHANNELADMIN-PROXYPULLCONSUMER-CONNECT-PULL-SUPPLIER" USING
PROXYSUPPLIER
MY-OBJ
ENV. /* 3 */
...
END PROGRAM "FUNC".
PROGRAM-ID. "SERVER-COSEVENTCOMM-PULLSUPPLIER-PULL". /* 4 */
...
LINKAGE SECTION.
01 COPY PROXYPULLSUPPLIER IN COSEVENTCOMM REPLACING COSEVENTCHANNELADMIN-PROXYP002
BY OBJ.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 SENDDATA USAGE POINTER.
PROCEDURE DIVISION USING
OBJ
ENV
EVDATA.
...
/* アプリケーションの処理 */
...
EXIT PROGRAM.
END PROGRAM "SERVER-COSEVENTCOMM-PULLSUPPLIER-PULL".イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
イベントチャネルのオブジェクトリファレンスを獲得します。
イベントチャネルと接続します。
ユーザがサプライヤ上に実装するSERVER-COSEVENTCOMM-PULLSUPPLIER-PULLメソッドです。
(3)コンシューマの作成
コンシューマからイベントチャネルにイベントデータを要求する手続きの例、および処理の流れを以下に示します。
[COBOLによるPullモデルのコンシューマ]
PROGRAM-ID. "FUNC".
...
CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-CONSUMERS" USING
EVENTCHOBJ
ENV
CONSUMER. /* 1 */
CALL "COSEVENTCHANNELADMIN-CONSUMERADMIN-OBTAIN-PULL-SUPPLIER" USING
CONSUMER
ENV
PROXYPULL. /* 2 */
CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-CONNECT-PULL-CONSUMER" USING
PROXYPULL
PROXYPULL
ENV. /* 3 */
CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULL" USING
PROXYPULL
ENV
EVDATA. /* 4 */
CALL "COSEVENTCHANNELADMIN-PROXYCONSUMER-DISCONNECT-PULL-SUPPL" USING
PROXYPULL
ENV. /* 5 */
...
END PROGRAM "FUNC".イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
イベントチャネルのオブジェクトリファレンスを獲得します。
イベントチャネルと接続します。
イベントチャネルにCOSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULLメソッドを発行します。
イベントチャネルと切断します。
[待ち合わせる場合]
コンシューマは、サプライヤからイベントデータを待ち合わせて引き出すには、以下のメソッドを使用します。イベントチャネルからイベントデータを取り出し、CORBA-ANY型の復帰値を返します。イベントチャネルからイベントデータを取り出せるようになるか、または例外が発生するまでブロックされます。COSEVENTCHANNELADMIN-PROXYPULLSUPPLIERは、COSEVENTCOMM-PULLSUPPLIERを継承しています。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN COSEVENTCOMM.
01 COPY PULLSUPPLIER IN COSEVENTCOMM REPLACING
COSEVENTCHANNELADMIN-PULLSUPPLIER BY OBJ.
COPY CONST IN CORBA.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 EVDATA USAGE IS POINTER.
PROCEDURE DIVISION.
CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-PULL" USING
OBJ
ENV
EVDATA.[待ち合わせない場合]
コンシューマは、サプライヤからイベントデータを待ち合わせないで引き出すには、以下のメソッドを使用します。イベントチャネルからイベントデータを取り出し、CORBA-ANY型の復帰値を返します。イベントチャネルからイベントデータを取り出せない場合は、即座に復帰します。イベントデータが取り出せた場合は、HASEVENTにCORBA-TRUEが設定されます。イベントデータを取り出せなかった場合は、HASEVENTにCORBA-FALSEが設定されます。COSEVENTCHANNELADMIN-PROXYPULLSUPPLIERは、COSEVENTCOMM-PULLSUPPLIERを継承しています。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN COSEVENTCOMM.
01 COPY PULLSUPPLIER IN COSEVENTCOMM REPLACING
COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER BY OBJ.
COPY CONST IN CORBA.
01 COPY BOOLEAN IN CORBA REPLACING CORBA-BOOLEAN BY HASEVENT.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 EVDATA USAGE IS POINTER.
PROCEDURE DIVISION.
CALL "COSEVENTCHANNELADMIN-PROXYPULLSUPPLIER-TRY-PULL" USING
OBJ
HASEVENT
ENV
EVDATA.