- ...operations
- This is a somewhat idealistic assumption but
sufficient for the scope of this example.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...languages
- The CORBA
specification currently defines language mappings for a variety of
high level languages like C, C++, Smalltalk, Cobol and Java.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...classes
- Note that C++ is currently the only language which is
supported by MICO.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...dispatchers
- 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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...this
- mico-c++ and
mico-ld are wrapper scripts for the C++ compiler and the linker,
see section 4.6 for details
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...machines
- 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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...BOA
- The Basic Object Adapter
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...invocations
- You can make run() exit by
calling the ORB method shutdown(), see section
4.3.4 for details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...section
- 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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...socket
- Unix-domain sockets are named, bidirectional pipes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...reference
- IOR means
Interoperable Object Reference
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...registry
- See files admin/code_set_registry.txt and
admin/mico_code_set_registry.txt in the MICO source
tree.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...exiting
- ird is terminated by
pressing ctrl-c or by sending it the SIGTERM signal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...implementations
- which basically means running a program
that implements an object
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...activated
- i.e. which program has to be
run with which options and what activation policy has to be used for the
implementation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...exiting
- micod is
terminated by pressing ctrl-c or by sending it the
SIGTERM signal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...server
- 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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...to
- The -ORBImplRepoAddr option is usually already in
your .micorc file, so you do not have to specify it.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...needed
- Such a design pattern is called a factory.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...object
- If you delete lines 10 and 11 you will get the code for
create() in a shared or persistent server.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...server
- 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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...id
- See section 3.3.3 for details on
repository ids.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...231
- For instance by throwing an exception that is caught
in restore().
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...above
- Note that the code generated by the IDL
compiler makes use of the DII interface
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.