... operations3.1
This is a somewhat idealistic assumption but sufficient for the scope of this example.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... languages3.2
The CORBA specification currently defines language mappings for a variety of high level languages like C, C++, Smalltalk, Cobol and Java.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... classes3.3
Note that C++ is currently the only language which is supported by MICO.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... dispatchers3.4
In this example the list contains only one dispatcher, namely for the Account-object. Later when we discuss interface inheritance this list will contain a dispatcher for each class in the inheritance hierarchy.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... this3.5
mico-c++ and mico-ld are wrapper scripts for the C++ compiler and the linker, see section 4.6 for details
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... machines3.6
Of course you can have some of the object implementations in the same process and some in other processes. The ORB hides the actual locations of the object implementations from the user
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... BOA3.7
The Basic Object Adapter
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... invocations3.8
You can make run() exit by calling the ORB method shutdown(), see section 4.3.4 for details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... section3.9
The CORBA standard offers the ORB method resolve_initial_references() to obtain an object reference for the naming service. But that only moves the problem to the ORB instead of solving it.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... socket3.10
Unix-domain sockets are named, bidirectional pipes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... reference4.1
IOR means Interoperable Object Reference
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... registry4.2
See files admin/code_set_registry.txt and admin/mico_code_set_registry.txt in the MICO source tree.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... exiting4.3
ird is terminated by pressing ctrl-c or by sending it the SIGTERM signal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... implementations4.4
which basically means running a program that implements an object
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... activated4.5
i.e. which program has to be run with which options and what activation policy has to be used for the implementation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... exiting4.6
micod is terminated by pressing ctrl-c or by sending it the SIGTERM signal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... server4.7
Usually one would define a new interface ManagedObject that contains the management operations and derive Account from ManagedObject. We don't do this here for ease of exposition.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... to4.8
The -ORBImplRepoAddr option is usually already in your .micorc file, so you do not have to specify it.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... needed4.9
Such a design pattern is called a factory.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... object4.10
If you delete lines 10 and 11 you will get the code for create() in a shared or persistent server.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... server4.11
Note that the CORBA 2 specification only gives you some vague idea of object persistence but omits any implementation details. That is why everything explained in this section is MICO-specific and will not work with other CORBA implementations.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... id4.12
See section 3.3.3 for details on repository ids.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... FALSE4.13
For instance by throwing an exception that is caught in restore().
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... other:4.14
If supported by the C++ compiler, the dynamic_cast<> operator could be used instead.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... option:4.15
If you omit this option, you will receive an ``Invalid Policy'' exception when trying to create a persistent POA.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.