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 ΡΡΠ° ΡΡΡΠ»ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ Ρ Π΄Π» Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ: