TAO自带的tao_nslist工具可以通过 -- ior 选项输出IOR,但如果想解析该IOR仍需要调用另一个工具tao_catior,很不方便,查看源码后发现仅需对nslist.cpp添加两处代码即可实现nslist集成IOR decode功能:
在include节添加:
#include "..\\catior\Catior_i.h"
#ifdef _DEBUG
#pragma comment (lib,"TAO_Catior_id.lib")
#else
#pragma comment (lib,"TAO_Catior_i.lib")
#endif
在show_chunk()函数中添加:
if(showIOR)
{
CORBA::String_var str =
orb->object_to_string (obj.in ());
ACE_DEBUG ((LM_DEBUG, ": %C\n", str.in ()));
// 以下为添加内容
Catior_i catior_impl;
ACE_CString strDecode;
CORBA::Boolean b = catior_impl.decode(str.in (), strDecode);
ACE_DEBUG ((LM_DEBUG, "%s\n", strDecode.c_str()));
}