ICE的服务器对象实现

原创 2012年03月22日 22:57:10
1、需要增加一个类继承至生成的接口类,并实现接口类的虚方法。
2、创建实现类的对象
3、调用adpater的add方法将创建的对象绑定到adapter中,并传入一个全局唯一标示符,该唯一标示可以通过如下方法生成:
   adapter->add(hello, communicator()->stringToIdentity("hello"));
   adapter->addWithUUID(hello);
   Ice::Ideentity id; id.name="hello"; adapter->add(hello, id);
4、adapter的add和addWithUUID方法返回一个代理对象,可以将该代理对象返回给客户端让其调用代理的方法
5、在实现接口的操作方法时,在每个操作的最后一个参数都会被ice映射成const Current& current,可以通过该成员获取操作调用上下文信息
   Current的定义如下:
   module Ice 
   {
        local dictionary<string, string> Context;
        enum OperationMode { Normal, \Idempotent };
        local struct Current 
   {
            ObjectAdapter adapter;    // 服务器的对象适配器,可以通过它再调用getCommunicator得到通信器
           Connection con;           // 连接对象
            Identity id;              // 服务对象标示
            string facet;             // 
            string operation;         // 操作的名称
            OperationMode mode;       // 操作模式
            Context ctx;              // 操作上下文属性
            int requestId;            // 请求ID
        };

    };

6、服务器端接收到请求后会自动的分派请求给正确的服务对象,因为在请求中携带了对象标示。在分派给服务对象前,可以设置拦截器,具体操作如下:
   adapter->add(hello, communicator()->stringToIdentity("hello"));
   该处不添加hello这个servant,取而代之的是设置一个DispatchInterceptor
   class MyDipatchInterceptor : public Ice::DispatchInterceptor
   {
   public:
       MyDipatchInterceptor(const MyServantIPtr& servant) : _servant(servant)
  {
  
  }
  
       virtual DispatchStatus dispatch(Request& request)
       {
            return _servant->dispatch(request);
       }
private:
  const MyServantIPtr& _servant;
   };
   adapter->add(new MyDipatchInterceptor(hello), communicator()->stringToIdentity("hello"));

相关文章推荐

详细教你如何部署ICE服务(一)

这系列文章将会一步步教你如何部署一个ICE服务,如果你正在读这篇博客,我想你已经了解了什么是ICE(Internet Communications Engine),以及如何去实现ICE服务,并且了解什...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

读书笔记--Slice-to-C++映射

客户端的Slice-to-C++映射   1.       引言 其映射定义:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作、传递参数、处理错误。 C++映射完全是线程安全的。例如...

ICE的属性配置 C++版

(2011-09-13 20:57:05) 转载 标签: 杂谈   Ice的初始化函数initialize的输入参数正好是主函数的输入参数,也就是...

ICE通讯服务器客户端模式

  • 2010年04月21日 15:05
  • 1.31MB
  • 下载

基于stun,turn ,ice协议的 SBC服务器

stun,turn,ice是ietf提出的处理voip网络中nat穿越问题的协议族,stun 可以处理大部分nat问题,turn是stun协议的一个增强版,专用于处理对称形nat 问题,而ice则是...

ICE通信之IceBox服务器

一、 简介 IceBox服务器用于配置服务、并把对它们的管理集中在一起,服务被开发成可动态加载的组件,通过属性为IceBox服务配置它负责加载和管理的应用特有的服务。要把多个服务组合成一个应用,...

在ICE客户端中如何定位服务器端的位置(即如何寻找代理)

最近开始学习ICE,头有点大,900多页的文档看了五百多页还不知CLIENT如何定位SERVER的位置,郁闷的很...昨天毛了直接看文档的最后几页..我晕原来在这里给阐述了...差不多想撞墙 以下是...

ICE:C#和Java共同的服务器

下面的例子来之ice的说明文档。有点修改。 1、创建一个c#的console application 2、添加对icecs.dll的引用 3、编写slice定义 4、生成c#代码 调...

ICE分布服务器部署

ICE分布式部署
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ICE的服务器对象实现
举报原因:
原因补充:

(最多只允许输入30个字)