catior.cpp
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 1,254 行 · 第 1/3 页
CPP
1,254 行
*cp = 0;
string++;
ACE_DEBUG ((LM_DEBUG,
"IR Server:\t\t%s\n",
IR_server));
CORBA::string_free (IR_server);
// Read the interface_marker
ACE_DEBUG ((LM_DEBUG,
"Interface Marker:\t%s\n",
string));
return 1;
}
int
main (int argc, char *argv[])
{
ACE_Get_Opt get_opt (argc, argv, "f:");
ACE_DECLARE_NEW_CORBA_ENV;
CORBA::ORB_var orb_var = CORBA::ORB_init (argc, argv, "TAO" ACE_ENV_ARG_PARAMETER);
CORBA::Boolean b = 0;
int opt;
while ((opt = get_opt ()) != EOF)
{
switch (opt)
{
case 'f':
{
// Read the file into a CORBA::String_var.
ACE_DEBUG ((LM_DEBUG,
"reading the file %s\n",
get_opt.opt_arg ()));
ifstream ifstr (get_opt.opt_arg ());
if (!ifstr.good ())
{
ifstr.close ();
return -1;
}
int have_some_input = 0;
while (!ifstr.eof())
{
char ch;
ACE_CString aString;
while (!ifstr.eof ())
{
ifstr.get (ch);
if (ch == '\n' || ifstr.eof ())
break;
aString += ch;
have_some_input = 1;
}
if (have_some_input == 0)
break;
ACE_DEBUG ((LM_DEBUG,
"\nhere is the IOR\n%s\n\n",
aString.rep ()));
char* str;
if (aString.find ("IOR:") == 0)
{
ACE_DEBUG ((LM_DEBUG,
"decoding an IOR:\n"));
// Strip the IOR: off the string.
ACE_CString prefix = "IOR:";
short prefixLength = prefix.length ();
ACE_CString subString =
aString.substring (prefixLength,
aString.length () - prefixLength);
subString[subString.length ()] = '\0';
str = subString.rep ();
b = catior (str ACE_ENV_ARG_PARAMETER);
}
else if (aString.find ("iiop:") == 0)
{
ACE_DEBUG ((LM_DEBUG,
"decoding an IIOP URL IOR\n"));
ACE_CString prefix = "IIOP:";
short prefixLength = prefix.length ();
ACE_CString subString =
aString.substring (prefixLength,
aString.length () - prefixLength);
//subString[subString.length () - 1] = '\0';
str = subString.rep ();
b = catiiop (str ACE_ENV_ARG_PARAMETER);
}
else if (aString.find (":IR:") > 0)
{
ACE_DEBUG ((LM_DEBUG,
"decoding an POOP IOR\n"));
str = aString.rep ();
b = catpoop (str ACE_ENV_ARG_PARAMETER);
}
else
ACE_ERROR ((LM_ERROR,
"Don't know how to decode this IOR\n"));
}
if (b == 1)
ACE_DEBUG ((LM_DEBUG,
"catior returned true\n"));
else
ACE_DEBUG ((LM_DEBUG,
"catior returned false\n"));
ifstr.close ();
}
break;
case '?':
case 'h':
default:
ACE_ERROR_RETURN ((LM_ERROR,
"Usage: %s "
"-f filename "
"\n"
"Reads an IOR "
"and dumps the contents to stdout "
"\n",
argv[0]),
1);
}
}
return 0;
}
static CORBA::Boolean
cat_tag_orb_type (TAO_InputCDR& stream) {
CORBA::ULong length = 0;
if (stream.read_ulong (length) == 0)
return 1;
TAO_InputCDR stream2 (stream, length);
stream.skip_bytes(length);
CORBA::ULong orbtype;
stream2 >> orbtype;
if (orbtype == TAO_ORB_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I ORB Type: %d (TAO)\n",
orbtype));
} else {
ACE_DEBUG ((LM_DEBUG,
"%I ORB Type: %d\n",
orbtype));
}
return 1;
}
static CORBA::Boolean
cat_tao_tag_endpoints (TAO_InputCDR& stream) {
CORBA::ULong length = 0;
if (stream.read_ulong (length) == 0)
return 1;
TAO_InputCDR stream2 (stream, length);
stream.skip_bytes(length);
TAO::IIOPEndpointSequence epseq;
stream2 >> epseq;
ACE_DEBUG ((LM_DEBUG,
"%I Number of endpoints: %d\n",
epseq.length()));
for (unsigned int iter=0; iter < epseq.length() ; iter++) {
ACE_DEBUG ((LM_DEBUG,
"%I Endpoint #%d:\n",iter+1));
const char *host = epseq[iter].host;
ACE_DEBUG ((LM_DEBUG,
"%I Host: %s\n",host));
unsigned short port = epseq[iter].port;
ACE_DEBUG ((LM_DEBUG,
"%I Port: %d\n",port));
ACE_DEBUG ((LM_DEBUG,
"%I Priority: %d\n",epseq[iter].priority));
}
return 1;
}
static CORBA::Boolean
cat_tag_group (TAO_InputCDR& stream) {
/*
ID is 27
Component Value len: 36
Component Value as hex:
01 01 00 cd 0f 00 00 00 64 65 66 61 75 6c 74 2d
64 6f 6d 61 69 6e 00 cd 01 00 00 00 00 00 00 00
02 00 00 00
The Component Value as string:
...-....default-domain.-............
*/
#if 1
cat_octet_seq ("TAG_GROUP", stream);
#else
CORBA::Octet version_major;
if (stream.read_octet(version_major) == 0)
{
return 1;
}
CORBA::Octet version_minor;
if (stream.read_octet(version_minor) == 0)
{
return 1;
}
#endif
return 1;
}
static CORBA::Boolean
cat_tag_policies (TAO_InputCDR& stream) {
CORBA::ULong length = 0;
if (stream.read_ulong (length) == 0)
return 1;
TAO_InputCDR stream2 (stream, length);
stream.skip_bytes(length);
Messaging::PolicyValueSeq policies;
stream2 >> policies;
ACE_DEBUG ((LM_DEBUG,
"%I Number of policies: %d\n",
policies.length()));
for (unsigned int iter=0; iter < policies.length() ; iter++) {
// Create new stream for pvalue contents
char *pmbuf = new char [policies[iter].pvalue.length()];
for (unsigned int biter=0 ;
biter < policies[iter].pvalue.length() - sizeof(int) ;
biter++) {
pmbuf[biter] = policies[iter].pvalue[biter + sizeof(int)];
}
int byteOrder = policies[iter].pvalue[0];
TAO_InputCDR stream3 (pmbuf,
policies[iter].pvalue.length(),
ACE_static_cast(int,byteOrder));
if (policies[iter].ptype == RTCORBA::PRIORITY_MODEL_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (PRIORITY_MODEL_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
RTCORBA::PriorityModel priority_model;
RTCORBA::Priority server_priority;
stream3 >> priority_model;
stream3 >> server_priority;
if (priority_model == RTCORBA::CLIENT_PROPAGATED) {
ACE_DEBUG ((LM_DEBUG,"%I Priority Model: %d (CLIENT_PROPAGATED)\n",
priority_model));
} else if (priority_model == RTCORBA::SERVER_DECLARED) {
ACE_DEBUG ((LM_DEBUG,"%I Priority Model: %d (SERVER_DECLARED)\n",
priority_model));
} else {
ACE_DEBUG ((LM_DEBUG,"%I Priority Model: %d (UNKNOWN!)\n",
priority_model));
}
ACE_DEBUG ((LM_DEBUG,
"%I Priority: %d\n",
server_priority));
} else if (policies[iter].ptype == Messaging::REBIND_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REBIND_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
#if (TAO_HAS_SYNC_SCOPE_POLICY == 1)
} else if (policies[iter].ptype == Messaging::SYNC_SCOPE_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (SYNC_SCOPE_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
#endif
} else if (policies[iter].ptype == Messaging::REQUEST_PRIORITY_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REQUEST_PRIORITY_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::REPLY_PRIORITY_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REPLY_PRIORITY_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::REQUEST_START_TIME_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REQUEST_START_TIME_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::REQUEST_END_TIME_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REQUEST_END_TIME_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::REPLY_START_TIME_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REPLY_START_TIME_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::REPLY_END_TIME_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (REPLY_END_TIME_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::RELATIVE_REQ_TIMEOUT_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (RELATIVE_REQ_TIMEOUT_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (RELATIVE_RT_TIMEOUT_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::ROUTING_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (ROUTING_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::MAX_HOPS_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (MAX_HOPS_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else if (policies[iter].ptype == Messaging::QUEUE_ORDER_POLICY_TYPE) {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (QUEUE_ORDER_POLICY_TYPE)\n",
iter+1,
policies[iter].ptype));
} else {
ACE_DEBUG ((LM_DEBUG,
"%I Policy #%d Type: %d (UNKNOWN)\n", iter+1,
policies[iter].ptype));
}
delete [] pmbuf;
}
return 1;
}
static CORBA::Boolean
cat_octet_seq (const char *object_name,
TAO_InputCDR& stream)
{
CORBA::ULong length = 0;
if (stream.read_ulong (length) == 0)
return 1;
ACE_DEBUG ((LM_DEBUG,
"%I %s len:\t%d\n",
object_name,
length));
ACE_DEBUG ((LM_DEBUG,
"%I %s as hex:\n",
object_name));
CORBA::Octet anOctet;
char* objKey = CORBA::string_alloc (length + 1);
short counter = -1;
ACE_DEBUG ((LM_DEBUG, "%I "));
u_int i = 0;
for (; i < length; i++)
{
if (++counter == 16)
{
ACE_DEBUG ((LM_DEBUG, "\n%I "));
counter = 0;
}
stream.read_octet (anOctet);
ACE_DEBUG ((LM_DEBUG, "%02.2x ", anOctet));
objKey[i] = (char) anOctet;
}
objKey[i] = '\0';
ACE_DEBUG ((LM_DEBUG,
"\n%I The %s as string:\n%I ",
object_name));
for (i = 0; i < length; i++)
{
char c = objKey[i];
if (isprint (c))
ACE_DEBUG ((LM_DEBUG, "%c", c));
else
ACE_DEBUG ((LM_DEBUG, "."));
}
CORBA::string_free (objKey);
ACE_DEBUG ((LM_DEBUG, "\n"));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?