欢迎来到天天文库
浏览记录
ID:40555232
大小:13.69 KB
页数:4页
时间:2019-08-04
《ICE代码详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、服务器端代码:主要包括几个大的类。Ice::Communicator类:Iceruntime的主要进入点是由本地接口Ice::Communicator来表示的。 和在客户端一样,在你在服务器中做任何别的事情之前,你必须调用 Ice::initialize,对Iceruntime进行初始化。Ice::initialize返 回一个智能指针,指向一个Ice::Communicator实例: int main(intargc,char*argv[]) { Ice::CommunicatorPtric =Ice::initialize(argc,a
2、rgv); //... }在离开你的main函数之前,你必须调用Communicator::destroy。 destroy操作负责结束Iceruntime。特别地,destroy会等待任何还在运行 的操作调用完成。此外,destroy还会确保任何还未完成的线程都得以汇 合(joined),并收回一些操作系统资源,比如文件描述符和内存。决不要 让你的main函数不先调用destroy就终止;这样做会导致不确定的行为。Ice::Application类:#includeclassMyApplication:virtualp
3、ublicIce::Application{public: virtualintrun(int,char*[]){//主要是来实现该run的方法。 //Servercodehere... return0; }};intmain(intargc,char*argv[]){ MyApplicationapp; returnapp.main(argc,argv);}Ice::Service类:使用Ice::Service类的Ice应用至少要定义一个子类,并重新定义 start成员函数;服务必须在这个函数里执行其启动活动,比如处理命
4、令 行参数、创建对象适配器、注册servants。应用的main函数必须实例化这 个子类,调用其main成员函数,把程序的参数向量作为参数传给它。下 面的例子给出了一个最小限度的Ice::Service子类: #include#includeclassMyService: publicIce::Service {protected: virtualboolstart(int,char*[]);private: Ice::ObjectAdapterPtr_adapter;};bool M
5、yService::start(intargc,char*argv[]) { _adapter= communicator()->createObjectAdapter("MyAdapter"); _adapter->addWithUUID(newMyServantI);//用UUID来指定1个servant。 _adapter->activate(); //1个适配器包含1个servant还是多个? returntrue;}int main(intargc,char*argv[]) { MyServicesvc; retur
6、nsvc.main(argc,argv);}linux守护进程命令行:--daemon,--noclose(阻止ice::service关闭无用的文件描述符),--nochdir(阻止ice::service变更当前目录)Servant类:继承于ice::object类。
此文档下载收益归作者所有