[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 */MaxQueueLengthの値を設定します(long型)。
MaxConsumersの値を設定します(long型)。
MaxSuppliersの値を設定します(long型)。
上記3項目分のバッファ領域を獲得します。
nameにMaxQueueLength、valueにany型で1の値を設定します。
nameにMaxConsumers、valueにany型で2の値を設定します。
nameにMaxSuppliers、valueにany型で3の値を設定します。
5~7までのシーケンス型であるAdminPropertiesを作成します。
イベントチャネルの生成時にAdminプロパティ項目を設定します。
[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 ) {
...
}MaxQueueLengthの値を設定します(long型)。
MaxConsumersの値を設定します(long型)。
MaxSuppliersの値を設定します(long型)。
上記3項目分のバッファ領域を獲得します。
nameにMaxQueueLength、valueにany型で1の値を設定します。
nameにMaxConsumers、valueにany型で2の値を設定します。
nameにMaxSuppliers、valueにany型で3の値を設定します。
5~7までのシーケンス型であるAdminPropertiesを作成します。
イベントチャネルの生成時にAdminプロパティ項目を設定します。
[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) {
...
}MaxQueueLengthの値を設定します(long型)。
MaxConsumersの値を設定します(long型)。
MaxSuppliersの値を設定します(long型)。
上記3項目分のバッファ領域を獲得します。
nameにMaxQueueLength、valueにany型で1の値を設定します。
nameにMaxConsumers、valueにany型で2の値を設定します。
nameにMaxSuppliers、valueにany型で3の値を設定します。
イベントチャネルの生成時にAdminプロパティ項目を設定します。
[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 */3項目分のバッファ領域を獲得します。
NAMEにMAXQUEUELENGTHを設定します。
ANY-VALUEにANY型でMAXQUEUELENGTHの値を設定します(LONG型)。
NAMEにMAXCONSUMERSを設定します。
ANY-VALUEにANY型でMAXCONSUMERSの値を設定します(LONG型)。
NAMEにMAXSUPPLIERSを設定します。
ANY-VALUEにANY型でMAXSUPPLIERSの値を設定します(LONG型)。
イベントチャネルの生成時にAdminプロパティ項目を設定します。