问题标签 [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.

0 投票
1 回答
91 浏览

corba - 如何让 ACE/TAO 服务设置更人性化?

建立通过 ACE/TAO CORBA 框架进行通信的应用程序网络的标准方法一直是

  1. 运行命名服务
  2. 运行事件通道
  3. 运行您的应用程序

我想减轻我的最终用户不得不手动生成多个后台服务的负担,并正在寻找一个干净的解决方案。我还希望我的网络尽可能即插即用。这意味着我们在中央控制器实例的帮助下同步各种硬件组件。这些配对中的每一个都构成一个(隔离的)网络,因此我们可以在一个环境中拥有多个配对,并且不希望它们之间有任何干扰。

我的想法是在控制器初始化时生成一个命名服务和事件服务,但我还没有找到一个很好的方法来生成两个进程(tao_cosnaming,tao_rtevent)作为子进程,以便它们真正绑定到控制器实例如果控制器崩溃,请不要继续运行,即 TAO 内部是否已经存在允许这样做的机制?

0 投票
1 回答
146 浏览

c++ - ACE/TAO 性能问题

ACE/TAO length() 函数花费了太多时间。因为它在设置长度时使用 new 运算符创建了这么多内存。任何人都知道仅在 TAO 中设置长度的替代长度功能。

谢谢,

0 投票
1 回答
406 浏览

ace - 只接收来自特定 DDS 主题实例的消息?

我正在使用 OpenDDS v3.6,并尝试向特定的 DDS 对等方发送消息,这是众多对等方之一。在 IDL 中,消息结构如下所示:

我的理解是,因为数据键是唯一的,所以这是一个正在写入的主题的新实例,并且使用相同的数据键写入的任何进一步的 msgs 都会发送到该主题的这个特定实例。我的发送代码如下:

所以现在我需要弄清楚如何让接收对等方只从这个主题实例中读取,而不是接收发送给其他对等方的所有其他消息。我从以下内容开始,但不确定如何正确选择特定主题实例。

非常感谢任何帮助。

0 投票
1 回答
110 浏览

c++ - 如果线程本身退出,则从线程调用的方法强制返回

我每 2 秒使用一个 pthread 轮询网络。为此,我从 pthread 的 run() 方法调用一个客户端接口。但是当服务器和客户端之间的网络中断时会发生什么,这个方法应该抛出异常,但现在没有发生。所以我打算强制返回这个方法并退出线程。

为了实现这一点,我试图通过发出信号来强制退出线程。但我仍然面临的问题是,从线程本身退出后,客户端接口很晚才抛出异常。这导致我的实现行为不一致。

我的代码看起来像这样

问这个问题的基本想法是,对我来说,我的底层交互 TAO 2.0a 没有立即检测到当前会话的网络故障,但在客户端它及时检测到它并启动另一个新会话进行连接。但一段时间后,新的和旧会话出现 CORBA::COMM_FAILURE 异常,因此导致服务器和客户端行为不稳定。这是TAO的限制吗?或者我必须做点什么才能让它发挥作用。如果有什么办法可以在这里解决,请帮助我。

谢谢

0 投票
1 回答
133 浏览

c++ - 当 PortableServer::ServantLocator preinvoke() 返回 CORBA::OBJECT_NOT_EXIST() 时处理 SIGABRT

以下是我使用的类的摘录,它继承自 TAO 中的 PortableServer::ServantLocator 类。当调用 preinvoke() 的重写方法时,如果仆人为 NULL(在此实例之前已被销毁),我将 CORBA::OBJECT_NOT_EXIST() 异常抛出回来,如下所示

但这会使用以下核心转储使进程崩溃

  1. 为什么 TAO 库没有捕捉到我抛出的异常?我对此做了很多谷歌搜索,但找不到任何解决方案。我参考这里的例子抛出了这个异常。我还尝试返回 NULL,希望在 TAO 中的调用方函数 RequestProcessingStrategyServantLocator::locate_servant() 处检查 NULL 指针异常可以处理它。即使那样,我也会得到相同的核心转储。

  2. 我的另一个问题是,如果我已经销毁了仆人并删除了它的引用,为什么 TAO 会首先调用 preinvoke()。任何人都可以向我展示如何删除 this 引用的一个很好的例子,这样 preinvoke() 就不会被调用?

编辑

我正在使用 ACE TAO 6.0.7_x86

正如@Johnny Willemsen 的回复中所建议的那样,我在客户端代码中发现异常,即调用服务器操作的地方。但它没有在这里被抓住。代码仍然崩溃。

我的客户端代码如下所示

0 投票
1 回答
1287 浏览

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* 传递到消息中。

然后像以前一样写消息

参与者:

话题:

出版商:

作家:

任何帮助都将不胜感激。谢谢!

0 投票
1 回答
130 浏览

c++ - Tao客户端在服务器关闭时的健壮性

上下文:在服务器-客户端设置中(使用 ace-tao)。

问题陈述:服务器可能已关闭,而客户端已启动并尝试进行 API 调用。现在为了使客户端设置更加健壮,我想让客户端能够了解服务器关闭状态,并且当服务器再次启动时,它可以尝试重新绑定并准备好新的 ORB,以备不时之需API 调用。

有什么建议么?

0 投票
1 回答
109 浏览

erlang - 当由 TAO orb 抛出时,Orber (Erlang ORB) 无法捕获用户定义的异常

我有一个 C++ CORBA 服务器,它实现了一个抛出用户定义异常的接口。

当客户端和服务器都用 C++ 实现(使用 TAO orb 和 omniORB 进行测试)时,我很容易捕捉到特定的异常。

但是当我从 Erlang(使用 orber)调用相同的方法时,异常显示为通用异常,而不是特定的用户定义异常。

为了测试这一点,我只使用了一个简单的 IDL -

如果服务器和客户端都在 C++ 中 - 我得到的异常是(为了测试我将它编码为总是抛出用户异常)

但是当通过 Erlang 调用时 - 我得到 -

在说明 Orber 应用程序以启用正确的行为时,我是否需要做一些特别的事情?

编辑-这就是我从erlang调用服务器的方式-

在 Erlang 提示符下,这就是我所做的 -

0 投票
1 回答
227 浏览

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。

0 投票
0 回答
172 浏览

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 不会被创建,因此我不能注册类型。我做错了什么明显的事情吗?谢谢你。