Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 85

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

CORBA::Object_var NameService =Orb->resolve_initial_references(Β«NameServiceΒ»);

Помимо получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ссылок Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ (Implementation Repositoiy) ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ интСрфСйсов (Interface Repositoiy), ΠΌΠ΅Ρ‚ΠΎΠ΄ ORB-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° resolve_initial_references() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ Π» я ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ я ссылки Π½Π° слуТбу ΠΈΠΌΠ΅Π½. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² Π½ΡƒΠΆΠ½ΡƒΡŽ ссылку, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-сСрвСр создаСт Π½Π° Π΅Π΅ основС ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ контСкст (см. строку 23):

CosNaming::NamingContext_var NamingContext =

CosNaming::NamingContext::_narrow(NameService);

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ контСкста, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ² слуТбу ΠΈΠΌΠ΅Π½ ΠΈ создав Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ контСкст, сСрвСрная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² контСкст ΠΏΠ°Ρ€Ρ‹ (связывания ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ) «имя/ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Π» ссылка». ИмСна ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ контСксты. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² контСкст ΠΏΠ°Ρ€Ρƒ «имя/ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ ссылка», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ имя. ИмСна Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² стандартС CORBA посрСдством структуры NameComponent.

struct NameComponent { //.. .

Istring_var id;

Istring_var kind;

}

Π’ CORBA-Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ MICO структура NameComponent ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ CosNaming. h. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° NameComponent содСрТит Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°: id ΠΈ kind. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния тСкста ΠΈΠΌΠ΅Π½ΠΈ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ прСдставляСт собой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для классификации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ.

//...

CosNaming::Name ObjectName;

ObjectName.length(1);

ObjectName.id = Corba::string_dup (" trainΒ») ;

ObjectName.kind=Corba::string_dup(Β«land_transportationΒ»);

NamingContext->bind(ObjectName,ObjectReference) ;

//...

Π—Π΄Π΅ΡΡŒ объяв Π» яСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° NameComponent. Атрибут id устанавливаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Β«trainΒ», Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ kindβ€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ land_transportation. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ id Π΄ΠΎ Π» ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ описатС Π» Π΅ ΠΌ (дСскриптором) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Атрибут kind ΠΌ ΠΎΠΆΠ½ΠΎ ис-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для описания контСкста ΠΈΠ»ΠΈ логичСской Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ классифицируСт ΠΏΠΎΠ΅Π·Π΄ (train) ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ land_transportation (Π½Π°Π·Π΅ ΠΌ Π½Ρ‹ΠΉ Π²ΠΈΠ΄ транспорта). ΠœΠ΅Ρ‚ΠΎΠ΄ bind () ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈ ΠΌ я ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ObjectName Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ссылку ObjectReference ΠΈ связываСт Π΅Π΅ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ ΠΌ ΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌ контСксто ΠΌ. И ΠΌ я ΠΌ ΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° NameComponent. Если имя состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° NameComponent, ΠΎΠ½ΠΎ называСтся простым, Π° Ссли ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… β€” составным. Если имя составноС, Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ kind ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для описания ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ (этот ΠΌΠ΅Ρ‚ΠΎΠ΄ рассматриваСтся Π² Π³Π»Π°Π²Π΅ 12). Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌe 8.3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ связываСтся с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ссылкой, которая соотносится с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ контСкстом. ПослС связывания с ΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌ контСкстом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ контСксту посрСдством слуТбы ΠΈΠΌΠ΅Π½. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… 8.1 ΠΈ 8.2 для связи (посрС Π΄ ство ΠΌ строковой IOR-ссылки ) ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ потрСбитСля ΠΈ изготовитСля ΠΌΡ‹ использовали Ρ„Π°ΠΉΠ». А для связи ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра (см. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ 8.3) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слуТба ΠΈΠΌΠ΅Π½.

Π”Π΅Ρ‚Π°Π»ΠΈ инсталляции ΠΈ функционирования слуТбы ΠΈ ΠΌ Π΅Π½ зависят ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π΅Π΄Π° MICO Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ nsd, которая Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ COS-сов ΠΌ Ссти ΠΌ ΡƒΡŽ слуТбу ΠΈΠΌΠ΅Π½. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ слуТба ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ доступной для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-погрСбитСля, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π»ΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π΅ ΠΌ ΠΎΠ½ micod ΠΈ внСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ Π° ΠΌ ΠΈ nsd, micod ΠΈ imr, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ Ρ‰ Π΅ΠΉ Π΄ΠΎΠΊΡƒ ΠΌ Π΅ Π½ Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ руководству ΠΏΠΎ MICO (ΠΎ Π½ ΠΎ содСрТит ΠΌ ноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ imr, nsd, micod ΠΈ ird). Π’ листингС 8.5 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ· сцСнария, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для настройки сСрвСра Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 8.3, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ слуТбу ΠΈΠΌΠ΅Π½ доступной для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-потрСбитСля.

// Листинг 8.5. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ внСсСния записи Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

//Β Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈ запуска слуТбы ΠΈΠΌΠ΅Π½

//

micod -ORBIIOPAddr inet:hostname:portnumber β€”forward &

imr create NameService poa 'which nsd* IDL:omg.org/CosNaming/

NamingContext:1.0#NameService \

-ORBImplRepoAddr inet:hostname:portnumber \ -ORBNamingAddr inet:hostname:hostname:portnumberportnumber

imr create permutation persistent "'pwd'/permutation_server \ -ORBImplRepoAddr inet:hostname:portnumber \

-ORBNamingAddr inet:hostname:portnumberΒ» IDL:permutation:1.0 \ -ORBImplRepoAddr inet:hostname:portnumber \ -ORBNamingAddr inet:hos tname:portnumber

imr activate permutation -ORBImplRepoAddr inet:hostname:portnumber \

-ORBNamingAddr inet:hostname:portnumber

Π­Ρ‚ΠΎΡ‚ сцСнарий ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сочСтании с ΠΊΠΎΠ΄ΠΎΠΌ сСрвСра, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 8.3. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ здСсь сцСнарий Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ позволяСт автоматичСски Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-сСрвСр permutation_server. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈ ΠΌ Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° hostname ΠΈ portnumber Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 8.5 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся сСрвСр, ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΡ€Ρ‚Π° соотвСтствСнно.

Π‘Π»ΡƒΠΆΠ±Π° ΠΈΠΌΠ΅Π½ Β«ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Β»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 8.3 связываСт имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌ контСкстом. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 8.4 содСрТит тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-потрСбитСля, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слуТбу ΠΈΠΌΠ΅Π½ для доступа ΠΊ связкам Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ссылка», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 8.3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 8.3 Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ пСрСстановки любой строки символов, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚. Для пСрСстановки измСняСтся мСстополоТСниС символов Π² строкС. НапримСр, эти строки

Objcte Β  JbOetc Β  tbOjec

Ojbect Β  JObetc

Ojbcet Β  JtObec

прСдстав Π» ΡΡŽΡ‚ собой пСрСстановки строки Object. К Π» ΠΈΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сСрвСру строку ΠΈ сСрвСр Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ N пСрСстановок. Π‘Π΅Ρ€Π²Π΅Ρ€ связываСт ΠΈ ΠΌ я Β«InflectionΒ» с ΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌ контСкстом. ИмСнно это имя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ссылку ΠΈΠ· ΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ контСкста.

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 8.4

1Β int main(int argc, char *argv[])

2Β {

3

4 try{

5Β CORBA::ORB_var Orb = CORBA::ORB_init(argc,argv,Β«mico-local-orbΒ»);

6Β object_reference Remote(Β«NameServiceΒ»,Orb);

7Β Remote.objectName(Β«InflectionΒ»);

8Β permutation_var Client =permutation::_narrow(Remote.objectReference());

9Β char Value[1000];

strcpy(Value,Β«Common Object Request BrokerΒ»);

11Β Client->original(Value);

12Β int N;

12Β for(N = 0;N < 15;N++)

14Β {

15Β cout Β« Β«Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ nextPermutation() "<< Client- >nextPermutation() Β« endl;

16Β )

17Β }

18Β catch(CosNaming::NamingContext::NotFound_catch &exc) {

19Β cerr << " Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½.Β» Β« endl;

20Β }

21Β catch(CosNaming::NamingContext::InvalidName_catch &exc) {

22Β cerr << Β«Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ имя.Β» Β« endl;

23Β }

24

25Β return(0);

26 }

Для доступа ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ Ρ‰ Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ ΠΌ Π΅Π½Π½ΠΎΠ³ΠΎ контСкста Π² ΠΏΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ Π΅-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎ Π΄ ΠΈ ΠΌ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Π΄ Сйствия.

1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° слуТбу ΠΈΠΌΠ΅Π½.

2. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ слуТбы ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ контСкст.

3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ контСкста ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку ΠΈΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ДСйствиС 1 рСализуСтс я ΠΏΡƒΡ‚Π΅ ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌ Π΅Ρ‚ΠΎ Π΄ Π° resolve_initial_references():

//.. .

CORBA::Object_var NameService;

NameService = Orb->resolve_initial_references

(Β«NameServiceΒ»);

//...

Ѐункция resolve_initial_references () Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ссылку Π½Π° слуТбу ΠΈΠΌΠ΅Π½. Π’ дСйствии 2 эта ссылка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Ρ я Π΄Π» я получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ссылки Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ контСкст: