- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
命名服务
建立推模型的连接 一个使用者要想注册为推使用者,首先应当得到ProxyPushSupplier的对象引用,这个引用是通过调用ConsumerAdmin对象的obtain_push_supplier获得的。同样,一个提供者要推出事件,首先应当得到ProxyPushConsumer的对象引用,这个引用是通过调用SupplierAdmin对象的obtain_push_supplier获得的。 * 建立拉模型的连接 一个使用者要想注册为拉提供者,首先调用SupplierAdmin对象的obtain_pull_consumer获得ProxyPullConsumer的对象引用。同样,一个使用者要拉出事件,可以调用ConsumerAdmin对象的obtain_pull_supplier首先来获得ProxyPullSupplier的对象引用。 * 20.6 实现使用者和提供者 不管实现提供者还是使用者,也不管推 还是拉一个事件,执行的步骤和注册的方式基本相似。一般需要的步骤如下: (1) 为推使用者或者拉提供者实现一个伺服程序。推提供者和拉使用者都是客户机,所以不需要为此实现一个伺服程序。 (2) 获得一个事件通道的引用。这一步骤依赖与CORBA环境,但是,有时也采用命名服务或者交易服务来寻找一个事件通道对象的引用。 (3) 如果需要注册一个使用者,可以从EventChannel取得一个ConsumerAdmin引用。或者,如果需要注册一个提供者,可以从EventChannel取得一个SupplierAdmin引用。 (4) 获得合适的事件模型的代理对象的引用,并作为希望在对象ConsumerAdmin或者SupplierAdmin内使用的事件的模型。 (5) 调用合适的代理对象的连接操作。 * * * 18.7.4 命名服务迭代器 list操作 void list( in unsigned long how_many,//绑定的最大数目 out BindingList b1,//绑定的数目 out BindingIterator it//是否结束); 命名服务在拉迭代器之后调用list。初始批的绑定在out参数b1内返回,如果所有的绑定不能在第一次调用中返回,则out参数it将包含一个迭代器的引用。 next_n操作 boolean next_n( in unsigned long how_many,//绑定的最大数目 out BindingList b1//下一批how_many的绑定); * 命名服务迭代器 next_one操作 boolean next_one(out Binding b); 此操作在out参主中b中一次返回单个绑定。这个返回的值表明b是否包含合法的绑定。 destory操作 void destory(); 此操作可以永久地删除一个迭代器。可以在任何时候调用destory操作,甚至在从上下文检索所有绑定之前使用此操作。 * 翻译一个绑定列表 迭代器操作返回一个BindingList enum BindingType{nobject,ncontext} struct Binding{ Name binding_name; Bindingype binding_type;}; typedef sequenceBinding BindingList; 在这个序列中地每个绑定都成对出现。Binding结构binging_name成员提供绑定地名称,而binding_type成员表示绑定所代表地对象地类型。如果,该类型为ncontext,则该名称所绑定地对象是一个命名上下文。如果类型为nobject,则这个对象是一个普通地应用程序对象。 * 遍历命名上下文 遍历这个上下文的逻辑包含在list_context内, list_context打印参数nc所传递的上下文中的绑定。show_chunk是一个简单的有关打印绑定列表内容的辅助函数: void list_context(Cosnaming::NamingContext_ptr nc){ CosNaming::BindingIterator_var it; CosNaming::BindingList_var b1; const CORBA::Ulong CHUNK=100; nc-list(CHUNK,b1,it); show_chunk(b1); if(!CORBA::is_nil(it)){ CO
文档评论(0)