(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.