服务器端:
首先是两个全局变量:CORBA_ORB和PortableServer_POA
1.创建一个CORBA_Object 类型的变量,一般初始化为CORBA_OBJECT_NIL
2.用来写入IOR的文件(这个应该是可选的,还有其他的实现方法)。
3.环境变量,用来存储错误信息之类的。CORBA_Environment,(不知道为什么例子中都是一个长度
为一的数组)。
4.初始化:用命令行传入的参数,全局变量global_orb和root_poa,以及环境变量进行初始化。(1)PortbaleServer_POAManager
(2)设置局部CORBA_Environment变量(用于保存错误信息)
(3)设置SIGINT和SIGTERM的信号处理函数
(4)CORBA_ORB_init.ORB初始化,返回一个orb.
(5)CORBA_ORB_resolve_initial_references.用ORB返回一个POA
(6)PortableServer_POA__get_the_POAManager.用POA得到一个POA_Manager
(7) PortableServer_POAManager_activeate。激活POA_Manager.
(8)CORBA_OBject_release.释放POA_Manager?
5.激活服务。
利用已经生成好的框架,这里只是简单的调用。impl_X__create.这里X为实际的类,poa为参数。返回一个类的实例。
6.IOR写入文件,供客户端读取
7.服务运行:
CORBA_ORB_run.主事件循环。
8.清理工作
(1)PortableServer_POA_reference_to_id
(2)PortableServer_POA_deactivate_object
(3)PortableServer_POA_destroy。销毁POA
(4)CORBA_free释放objid
(5)CORBA_Object_release.又一次POA释放?
(6)CORBA_Object_release.释放实际的类。
(7)若ORB不空,CORBA_ORB_destroy
客户端:client
1.initializes the environment.CORBA_Environment
2.client initialize. init signal handling (SIGINT,SIGTERM).
CORBA_ORB_init(similar to the server)
3.read IOR from the file and translate it a X object
4.run the client.use the method of X to do the real work.
4.do some cleanup.
CORBA_Object_release.
if orb is not NULL,do CORBA_ORB_destroy.
客户端的代码量要比服务器端的少一些。不过大致流程都一样。orbit已经为服务器端生成了很多结构化的代码。而且,大部分CORBA程序都可以按着这个流程来,真正的实现部分并不多,所以熟悉了之后就可以写出很规范的代码。