问题标签 [tao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
corba - 如何让 ACE/TAO 服务设置更人性化?
建立通过 ACE/TAO CORBA 框架进行通信的应用程序网络的标准方法一直是
- 运行命名服务
- 运行事件通道
- 运行您的应用程序
我想减轻我的最终用户不得不手动生成多个后台服务的负担,并正在寻找一个干净的解决方案。我还希望我的网络尽可能即插即用。这意味着我们在中央控制器实例的帮助下同步各种硬件组件。这些配对中的每一个都构成一个(隔离的)网络,因此我们可以在一个环境中拥有多个配对,并且不希望它们之间有任何干扰。
我的想法是在控制器初始化时生成一个命名服务和事件服务,但我还没有找到一个很好的方法来生成两个进程(tao_cosnaming,tao_rtevent)作为子进程,以便它们真正绑定到控制器实例如果控制器崩溃,请不要继续运行,即 TAO 内部是否已经存在允许这样做的机制?
c++ - ACE/TAO 性能问题
ACE/TAO length() 函数花费了太多时间。因为它在设置长度时使用 new 运算符创建了这么多内存。任何人都知道仅在 TAO 中设置长度的替代长度功能。
谢谢,
ace - 只接收来自特定 DDS 主题实例的消息?
我正在使用 OpenDDS v3.6,并尝试向特定的 DDS 对等方发送消息,这是众多对等方之一。在 IDL 中,消息结构如下所示:
我的理解是,因为数据键是唯一的,所以这是一个正在写入的主题的新实例,并且使用相同的数据键写入的任何进一步的 msgs 都会发送到该主题的这个特定实例。我的发送代码如下:
所以现在我需要弄清楚如何让接收对等方只从这个主题实例中读取,而不是接收发送给其他对等方的所有其他消息。我从以下内容开始,但不确定如何正确选择特定主题实例。
非常感谢任何帮助。
c++ - 如果线程本身退出,则从线程调用的方法强制返回
我每 2 秒使用一个 pthread 轮询网络。为此,我从 pthread 的 run() 方法调用一个客户端接口。但是当服务器和客户端之间的网络中断时会发生什么,这个方法应该抛出异常,但现在没有发生。所以我打算强制返回这个方法并退出线程。
为了实现这一点,我试图通过发出信号来强制退出线程。但我仍然面临的问题是,从线程本身退出后,客户端接口很晚才抛出异常。这导致我的实现行为不一致。
我的代码看起来像这样
问这个问题的基本想法是,对我来说,我的底层交互 TAO 2.0a 没有立即检测到当前会话的网络故障,但在客户端它及时检测到它并启动另一个新会话进行连接。但一段时间后,新的和旧会话出现 CORBA::COMM_FAILURE 异常,因此导致服务器和客户端行为不稳定。这是TAO的限制吗?或者我必须做点什么才能让它发挥作用。如果有什么办法可以在这里解决,请帮助我。
谢谢
c++ - 当 PortableServer::ServantLocator preinvoke() 返回 CORBA::OBJECT_NOT_EXIST() 时处理 SIGABRT
以下是我使用的类的摘录,它继承自 TAO 中的 PortableServer::ServantLocator 类。当调用 preinvoke() 的重写方法时,如果仆人为 NULL(在此实例之前已被销毁),我将 CORBA::OBJECT_NOT_EXIST() 异常抛出回来,如下所示
但这会使用以下核心转储使进程崩溃
为什么 TAO 库没有捕捉到我抛出的异常?我对此做了很多谷歌搜索,但找不到任何解决方案。我参考这里的例子抛出了这个异常。我还尝试返回 NULL,希望在 TAO 中的调用方函数 RequestProcessingStrategyServantLocator::locate_servant() 处检查 NULL 指针异常可以处理它。即使那样,我也会得到相同的核心转储。
我的另一个问题是,如果我已经销毁了仆人并删除了它的引用,为什么 TAO 会首先调用 preinvoke()。任何人都可以向我展示如何删除 this 引用的一个很好的例子,这样 preinvoke() 就不会被调用?
编辑
我正在使用 ACE TAO 6.0.7_x86
正如@Johnny Willemsen 的回复中所建议的那样,我在客户端代码中发现异常,即调用服务器操作的地方。但它没有在这里被抓住。代码仍然崩溃。
我的客户端代码如下所示
ace - OpenDDS - message_writer->write(...) 错误 DDS::RETCODE_TIMEOUT
我正在 openDDS 中创建一个简单的消息程序。该程序使用发布者和订阅者。在发布者中,我写了一条消息:
当我尝试从 180 字节发送到 3012 字节时,写入器失败并显示:
错误 10 (== DDS::RETCODE_TIMEOUT)
,大约 260 条消息后(我正在尝试发送 1500 条消息)。我觉得奇怪的是,当我发送来自 1 <= x < 180 和 3012 > x > 102400+ 字节的消息时,它会起作用。
我收到了作家方面的错误。在我做的作家下面:
我的 idl 文件是这样的:
所以这使用了TAO字符串管理器。我将 char* 传递到消息中。
然后像以前一样写消息
参与者:
话题:
出版商:
作家:
任何帮助都将不胜感激。谢谢!
c++ - Tao客户端在服务器关闭时的健壮性
上下文:在服务器-客户端设置中(使用 ace-tao)。
问题陈述:服务器可能已关闭,而客户端已启动并尝试进行 API 调用。现在为了使客户端设置更加健壮,我想让客户端能够了解服务器关闭状态,并且当服务器再次启动时,它可以尝试重新绑定并准备好新的 ORB,以备不时之需API 调用。
有什么建议么?
erlang - 当由 TAO orb 抛出时,Orber (Erlang ORB) 无法捕获用户定义的异常
我有一个 C++ CORBA 服务器,它实现了一个抛出用户定义异常的接口。
当客户端和服务器都用 C++ 实现(使用 TAO orb 和 omniORB 进行测试)时,我很容易捕捉到特定的异常。
但是当我从 Erlang(使用 orber)调用相同的方法时,异常显示为通用异常,而不是特定的用户定义异常。
为了测试这一点,我只使用了一个简单的 IDL -
如果服务器和客户端都在 C++ 中 - 我得到的异常是(为了测试我将它编码为总是抛出用户异常)
但是当通过 Erlang 调用时 - 我得到 -
在说明 Orber 应用程序以启用正确的行为时,我是否需要做一些特别的事情?
编辑-这就是我从erlang调用服务器的方式-
在 Erlang 提示符下,这就是我所做的 -
cross-compiling - ACE TAO 为 vxworks 6.8 构建(从 Windows 7 为 PPC32 目标交叉编译)
是否有明确的说明来构建 ACE 和 TAO 库以在 Windriver VxWorks OS 上使用?目标是为 VxWorks 和 Windows 机器之间的 RPC 样式通信构建 ACE TAO。我在 Windows 7 上使用 Windriver Workbench 3.2,目标是 vxworks 6.8 ppc32。
idl - openDDS 不生成 typesupportc 标头
我遇到了让 TAO_idl 不生成 typesupportc 标头的问题。dds_TAOv2_all.sln 构建得很好,所有示例都生成了它们各自的类型支持文件,包括我的 IDL 文件中 typesupport_var 所需的 typesupportc.h 文件。
Xtypesupportc.h 是之前生成的,但是自从我必须重新加载 DDS(DDS 已编译配置等)时,当我使用 x.idl 文件运行 tao_idl 和 openDDS_idl 时,xtypesupportc 和 xtypesupports 不会被创建,因此我不能注册类型。我做错了什么明显的事情吗?谢谢你。