我使用 ACE TAO 作为 CORBA 实现。我想知道是否有人知道设置最大消息大小和最大连接数的任何选项。
omniORB有两个选项,giopMaxMsgSize并且maxGIOPConnectionPerServer。
即使 TAO 有ORBMaxMessageSize并且ORBLingerTimeout它导致我的服务器崩溃。我什至不知道这些是否是正确的选择。
这就是 TAO 调试输出的内容。
TAO (30232|3086943952) ORB_Core: Unable to initialize Codeset Manager
TAO (30232|3086943952) - Completed initializing the process-wide service context
TAO (30232|3086943952) - Default ORB services initialization begins
TAO (30232|3086943952) - Default ORB services initialization completed
TAO (30232|3086943952) - We are the default ORB ...
TAO (30232|3086943952) - Initializing the orb-specific services
TAO (30232|3086943952) - Setting primary connection timeout hook
TAO …Run Code Online (Sandbox Code Playgroud) 这是我用来绘制精灵的方法:
public void DrawSprite(Sprite sprite)
{
Gl.glBegin(Gl.GL_TRIANGLES);
{
for (int i = 0; i < Sprite.VertexAmount; i++)
{
Gl.glBindTexture(Gl.GL_TEXTURE_2D, sprite.Texture.Id);
DrawImmediateModeVertex(
sprite.VertexPositions[i],
sprite.VertexColors[i],
sprite.VertexUVs[i]);
}
}
Gl.glEnd();
}
Run Code Online (Sandbox Code Playgroud)
DrawImmediateModeVertex - 绘制一个顶点.
我应该Gl.glBindTexture退出for循环吗?当我渲染纹理时也会发生奇怪的事情,即使我提供了具有不同纹理ID的精灵,每次只绘制一个相同的纹理.
我有一个C++ CORBA服务器,它实现了抛出用户定义的异常的接口.
当客户端和服务器都在C++中实现时(使用TAO orb和omniORB进行测试),我很容易捕获到特定的异常.
但是当我从Erlang(使用orber)调用相同的方法时,异常显示为一般异常,而不是特定的用户定义异常.
为了测试这个,我只使用了一个简单的IDL -
interface Messenger {
exception cirrus_error{
short error_code;
string error_desc;
};
boolean send_message(in string user_name,
in string subject,
inout string message) raises (cirrus_error);
};
Run Code Online (Sandbox Code Playgroud)
如果服务器和客户端都在C++中 - 我得到的异常是(对于测试我将其编码为始终抛出用户异常)
CORBA exception: cirrus_error (IDL:Messenger/cirrus_error:1.0)
Run Code Online (Sandbox Code Playgroud)
但是当通过Erlang调用时 - 我得到了 -
** exception throw: {'EXCEPTION',{'UNKNOWN',[],1330446337,'COMPLETED_MAYBE'}}
in function corba:raise/1
Run Code Online (Sandbox Code Playgroud)
在说明Orber应用程序以启用正确行为时,是否需要执行一些特殊操作?
编辑 - 这是我从erlang调用服务器的方式 -
在Erlang提示符下,这就是我所做的 -
1> orber:jump_start().
2> O = corba:string_to_object(IORStr).
3> 'Messenger':send_message(O, "s", "t", "f").
** exception throw: {'EXCEPTION',{'UNKNOWN',[],1330446337,'COMPLETED_MAYBE'}}
in function corba:raise/1
Run Code Online (Sandbox Code Playgroud)