Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]() ![]() |
第4章 アプリケーションの開発(各機能) | > 4.1 イベントチャネル接続のアプリケーション開発 | > 4.1.1 ノーティフィケーションサービスのQoS機能の運用 |
[AdminPropertiesの作成例(Cの場合)]
Adminプロパティ項目は、動的生成イベントチャネルに設定できます。
動的生成チャネルのAdminプロパティ項目の設定は、CosNotifyChannelAdmin_EventChannelFactory_create_channel()を使ってイベントチャネルの生成時に、QoSPropertiesを設定します。QoSPropertiesはProperty構造体からなるシーケンス型です。CプログラムでQoSPropertiesを作成し、イベントチャネルに対してAdminプロパティ項目の設定方法と処理の流れを以下に説明します。
CORBA_long *maxQueueLength; CORBA_long *maxConsumers; CORBA_long *maxSuppliers; CosNotification_AdminProperties *pAdmin; maxQueueLength = CORBA_long_alloc(); *maxQueueLength = 200; /* 1 */ maxConsumers = CORBA_long_alloc(); *maxConsumers = 100; /* 2 */ maxSuppliers = CORBA_long_alloc(); *maxSuppliers = 20; /* 3 */ pProperty = CosNotification_PropertySeq_allocbuf( 3 ); /* 4 */ pProperty[0].name = CORBA_string_alloc( strlen(CosNotification_MaxQueueLength ) ); strcpy( pProperty[0].name, CosNotification_MaxQueueLength ); pProperty[0].value._type = TC_long; pProperty[0].value._value = maxQueueLength; /* 5 */ pProperty[1].name = CORBA_string_alloc( strlen(CosNotification_MaxConsumers ) ); strcpy( pProperty[1].name, CosNotification_MaxConsumers); pProperty[1].value._type = TC_long; pProperty[1].value._value = maxConsumers; /* 6 */ pProperty[2].name = CORBA_string_alloc( strlen(CosNotification_MaxSuppliers ) ); strcpy( pProperty[2].name, CosNotification_MaxSuppliers ); pProperty[2].value._type = TC_long; pProperty[2].value._value = maxSuppliers; /* 7 */ pAdmin = CosNotification_AdminProperties_alloc(); /* 8 */ pAdmin->_length = pAdmin ->_maximum = 3; pAdmin ->_buffer = pProperty; channel = CosNotifyChannelAdmin_EventChannelFactory_create_channel( factory, initial_qos, pAdmin, &channelID, &env ); /* 9 */
[AdminPropertiesの作成例(C++の場合)]
Adminプロパティ項目は、動的生成イベントチャネルに設定できます。
動的生成チャネルのAdminプロパティ項目の設定は、CosNotifyChannelAdmin::EventChannelFactory::create_channel()を使ってイベントチャネルの生成時に、QoSPropertiesを設定します。QoSPropertiesはProperty構造体からなるシーケンス型です。C++プログラムでQoSPropertiesを作成し、イベントチャネルに対してAdminプロパティ項目の設定方法と処理の流れを以下に説明します。
CORBA::Long maxQueueLength = 200; /* 1 */ CORBA::Long maxConsumers = 100; /* 2 */ CORBA::Long maxSuppliers = 20; /* 3 */ CosNotification::Property_var *pProperty = CosNotification::PropertySeq::allocbuf( 3 ); /* 4 */ pProperty[0]->name = CORBA::string_dup( CosNotification::MaxQueueLength ); pProperty[0]->value = new CORBA::Any(); *(pProperty[0]->value) <<= maxQueueLength; /* 5 */ pProperty[1]->name = CORBA::string_dup( CosNotification::MaxConsumers ); pProperty[1]->value = new CORBA::Any(); *(pProperty[1]->value) <<= maxConsumers; /* 6 */ pProperty[2]->name = CORBA::string_dup( CosNotification::MaxSuppliers ); pProperty[2]->value = new CORBA::Any(); *(pProperty[2]->value) <<= maxSuppliers; /* 7 */ CosNotification::AdminProperties * pAdmin = new CosNotification::AdminProperties( 3, 3, pProperty, CORBA_TRUE ); /* 8 */ try{ ... channel=factory->create_channel(*pQoS,*pAdmin,channelID, env ); /* 9 */ ... } catch( CORBA::Exception &e ) { ... }
[AdminPropertiesの作成例(Javaの場合)]
Adminプロパティ項目は、動的生成イベントチャネルに設定できます。
動的生成チャネルのAdminプロパティ項目の設定は、org.omg.CosNotifyChannelAdmin.EventChannelFactory.create_channel()を使ってイベントチャネルの生成時に、QoSPropertiesを設定します。QoSPropertiesはorg.omg.CosNotification.Propertyの配列形です。JavaプログラムでQoSPropertiesを作成し、イベントチャネルに対してAdminプロパティ項目の設定方法と処理の流れを以下に説明します。
int maxQueueLength = 200; /* 1 */ int maxConsumers = 100; /* 2 */ int maxSuppliers = 20; /* 3 */ org.omg.CosNotification.Property[] property = new org.omg.CosNotificationProperty[3]; /* 4 */ String name1 = org.omg.CosNotification.MaxQueueLength; org.omg.CORBA.Any any1 = new org.omg.CORBA.Any(); any1.insert_long(maxQueueLength); property[0] = new org.omg.CosNotification.Property(name1, any1); /* 5 */ String name2 = org.omg.CosNotification.MaxConsumers; org.omg.CORBA.Any any2 = new org.omg.CORBA.Any(); any1.insert_long(maxConsumers); property[1] = new org.omg.CosNotification.Property(name2, any2); /* 6 */ String name3 = org.omg.CosNotification.MaxSuppliers; org.omg.CORBA.Any any3 = new org.omg.CORBA.Any(); any1.insert_long(maxSuppliers); property[2] = new org.omg.CosNotification.Property(name3, any3); /* 7 */ try{ ... channel=factory->create_channel(QoS, property, channelID); /* 8 */ ... } catch(Exception e) { ... }
[AdminPropertiesの作成例(COBOLの場合)]
Adminプロパティ項目は、動的生成イベントチャネルに設定できます。
動的生成チャネルのAdminプロパティ項目の設定は、COSNOTIFYCHANNELADMIN-EVENTCHANNELFACTORY-CREATE-CHANNEL関数を使ってイベントチャネルの生成時に、QoSPropertiesを設定します。QoSPropertiesはProperty構造体からなるシーケンス型です。COBOLプログラムでQoSPropertiesを作成し、イベントチャネルに対してAdminプロパティ項目の設定方法と処理の流れを以下に説明します。
DATA DIVISION. WORKING-STORAGE SECTION. 01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY STRING-LENGTH. 01 COPY NOTIFICATION-PROPERTY IN COSEVENTCOMM REPLACING COSNOTIFICATION-PROPERTY BY N-PROPERTY. 01 COPY ADMINPROPERTIES IN COSEVENTCOMM REPLACING COSNOTIFICATION-ADMINPROPER001 BY ADMIN-PROPERTIES. 01 COPY ANY IN CORBA REPLACING CORBA-ANY BY TMP-ANY. LINKAGE SECTION. 01 COPY LONG IN CORBA REPLACING CORBA-LONG BY MAXQUEUELENGTH-DATA. 01 COPY LONG IN CORBA REPLACING CORBA-LONG BY MAXCONSUMERS-DATA. 01 COPY LONG IN CORBA REPLACING CORBA-LONG BY MAXSUPPLIERS-DATA. PROCEDURE DIVISION. MOVE 3 TO SEQ-MAXIMUM OF ADMIN-PROPERTIES. MOVE 3 TO SEQ-LENGTH OF ADMIN-PROPERTIES. CALL "CORBA-SEQUENCE-COSNOTIFICATION-PROPERTY-ALLOCBUF" USING SEQ-MAXIMUM OF ADMIN-PROPERTIES SEQ-BUFFER OF ADMIN-PROPERTIES. /* 1 */ MOVE FUNCTION LENG( COSNOTIFICATION-MAXQUEUELENGTH ) TO STRING-LEN. CALL "CORBA-STRING-SET" USING NAME OF N-PROPERTY STRING-LENGTH COSNOTIFICATION-MAXQUEUELENGTH. /* 2 */ MOVE FUNCTION LENG( TC-LONG ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TMP-POINTER STRING-LENGTH TC-LONG. CALL "CORBA-ORB-TYPECODE-FROM-CGEN-TC" USING TMP-POINTER ANY-TYPE OF TMP-ANY. CALL "CORBA-FREE" USING TMP-POINTER. CALL "CORBA-LONG-ALLOC" USING ANY-VALUE OF TMP-ANY. SET ADDRESS OF MAXQUEUELENGTH-DATA TO ANY-VALUE OF TMP-ANY. /* 3 */ MOVE 200 TO MAXQUEUELENGTH-DATA. MOVE TMP-ANY TO IDL-VALUE OF N-PROPERTY. MOVE FUNCTION ADDR( ADMIN-PROPERTIES ) TO TMP-SEQ-POINTER. MOVE FUNCTION ADDR( N-PROPERTY ) TO TMP-POINTER. MOVE 1 TO WK. CALL "CORBA-SEQUENCE-ELEMENT-SET" USING TMP-SEQ-POINTER WK TMP-POINTER. MOVE FUNCTION LENG( COSNOTIFICATION-MAXCONSUMERS ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING NAME OF N-PROPERTY STRING-LENGTH COSNOTIFICATION-MAXCONSUMERS. /* 4 */ MOVE FUNCTION LENG( TC-LONG ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TMP-POINTER STRING-LENGTH TC-LONG. CALL "CORBA-ORB-TYPECODE-FROM-CGEN-TC" USING TMP-POINTER ANY-TYPE OF TMP-ANY. CALL "CORBA-FREE" USING TMP-POINTER. CALL "CORBA-LONG-ALLOC" USING ANY-VALUE OF TMP-ANY. SET ADDRESS OF MAXCONSUMERS-DATA TO ANY-VALUE OF TMP-ANY. /* 5 */ MOVE 100 TO MAXCONSUMERS-DATA. MOVE TMP-ANY TO IDL-VALUE OF N-PROPERTY. MOVE FUNCTION ADDR( ADMIN-PROPERTIES ) TO TMP-SEQ-POINTER. MOVE FUNCTION ADDR( N-PROPERTY ) TO TMP-POINTER. MOVE 2 TO WK. CALL "CORBA-SEQUENCE-ELEMENT-SET" USING TMP-SEQ-POINTER WK TMP-POINTER. MOVE FUNCTION LENG( COSNOTIFICATION-MAXSUPPLIERS ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING NAME OF N-PROPERTY STRING-LENGTH COSNOTIFICATION-MAXSUPPLIERS. /* 6 */ MOVE FUNCTION LENG( TC-LONG ) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TMP-POINTER STRING-LENGTH TC-LONG. CALL "CORBA-ORB-TYPECODE-FROM-CGEN-TC" USING TMP-POINTER ANY-TYPE OF TMP-ANY. CALL "CORBA-FREE" USING TMP-POINTER. CALL "CORBA-LONG-ALLOC" USING ANY-VALUE OF TMP-ANY. SET ADDRESS OF MAXSUPPLIERS-DATA TO ANY-VALUE OF TMP-ANY. /* 7 */ MOVE 20 TO MAXSUPPLIERS-DATA. MOVE TMP-ANY TO IDL-VALUE OF N-PROPERTY. MOVE FUNCTION ADDR( ADMIN-PROPERTIES ) TO TMP-SEQ-POINTER. MOVE FUNCTION ADDR( N-PROPERTY ) TO TMP-POINTER. MOVE 3 TO WK. CALL "CORBA-SEQUENCE-ELEMENT-SET" USING TMP-SEQ-POINTER WK TMP-POINTER. CALL "COSNOTIFYCHANNELADMIN-EVENTCHANNELFACTORY-CREATE-CHANNEL" USING FACTRY-NAMING QOS-PROPERTIES ADMIN-PROPERTIES CHANNEL-ID ENV EVENT-CHNL. /* 8 */
目次
索引
![]() ![]() |