📄 iogrtest.cpp
字号:
// IOGRTest.cpp,v 1.10 2003/12/22 01:44:39 wilson_d Exp
//========================================================================
//
// = LIBRARY
// tests/FaultTolerance/IOGRManipulation
//
//
// = FILENAME
// IOGRTest.cpp
//
// = DESCRIPTION
// This program tests the basic functionality FT IOGR implementation
//
// = AUTHOR
// Bala Natarajan <bala@cs.wustl.edu>
//
//=========================================================================
#include "tao/ORB.h"
#include "orbsvcs/FT_CORBA_ORBC.h"
#include "orbsvcs/FaultTolerance/FT_IOGR_Property.h"
ACE_RCSID(IOGRManipluation,
IOGRTest,
"IOGRTest.cpp,v 1.10 2003/12/22 01:44:39 wilson_d Exp")
int
main (int argc, char *argv[])
{
ACE_DEBUG ((LM_DEBUG, "---------------------------------------------\n"));
ACE_DEBUG ((LM_DEBUG, "Running the IOGRManipulation Tests.\n"));
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Retrieve the ORB.
CORBA::ORB_var orb_ = CORBA::ORB_init (argc,
argv,
0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// **********************************************************************
// Get an object reference for the ORBs IORManipulation object!
CORBA::Object_var IORM =
orb_->resolve_initial_references (TAO_OBJID_IORMANIPULATION,
0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
TAO_IOP::TAO_IOR_Manipulation_var iorm =
TAO_IOP::TAO_IOR_Manipulation::_narrow (IORM.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// **********************************************************************
// Create a few fictitious IORs
CORBA::Object_var name1 =
orb_->string_to_object ("iiop://acme.cs.wustl.edu:6060/xyz"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
CORBA::Object_var name2 =
orb_->string_to_object ("iiop://tango.cs.wustl.edu:7070/xyz"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// **********************************************************************
// Create IOR list for use with merge_iors.
TAO_IOP::TAO_IOR_Manipulation::IORList iors (2);
iors.length (2);
iors [0] = name1;
iors [1] = name2;
// **********************************************************************
CORBA::Object_var merged =
iorm->merge_iors (iors ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Check for set and get primaries
// Make a dummy property set
FT::TagFTGroupTaggedComponent ft_tag_component;
TAO_FT_IOGR_Property prop (ft_tag_component);
CORBA::Boolean retval =
iorm->set_primary (&prop, name2.in (), merged.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (retval != 0)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tThe primary has been set\n")));
else
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tError in setting primary\n")));
return -1;
}
// Check whether a primary has been set
retval = iorm->is_primary_set (&prop,
merged.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (retval)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tis_primary_set () returned true\n")));
else
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tis_primary_set () returned false\n")));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tSo Exiting\n")));
return -1;
}
// Get the primary
CORBA::Object_var prim =
iorm->get_primary (&prop,
merged.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Check whether we got back the right primary
if (prim->_is_equivalent (name2.in ()))
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tWe got the right primary back\n")));
}
else
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tWe have a problem in getting the right primary\n")));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tSo exiting\n")));
return -1;
}
// **********************************************************************
// Set properties
// Property values
// Major and Minor revision numbers
ft_tag_component.component_version.major = (CORBA::Octet) 1;
ft_tag_component.component_version.minor = (CORBA::Octet) 0;
// Domain id
const char *id = "iogr_regression";
ft_tag_component.group_domain_id = id;
// Object group id
ft_tag_component.object_group_id =
(CORBA::ULongLong) 10;
// Version
ft_tag_component.object_group_ref_version =
(CORBA::ULong) 5;
// Set the property
retval = iorm->set_property (&prop,
merged.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
/// Extract the property
FT::TagFTGroupTaggedComponent ftc;
TAO_FT_IOGR_Property tmp_prop;
retval =
tmp_prop.get_tagged_component (merged.in (),
ftc
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG,
"(%P|%t) Testing for tagged component \n"));
if ((ftc.object_group_ref_version != 5) &&
(ftc.object_group_id != 10))
ACE_ERROR ((LM_ERROR,
"%P|%t) Not working right \n"));
if (retval)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tWe have set the property\n")));
}
ACE_CATCH (TAO_IOP::NotFound, userex)
{
ACE_PRINT_EXCEPTION (userex,
ACE_TEXT ("Unexpected NotFound Exception!\n"));
return -1;
}
ACE_CATCH (TAO_IOP::Duplicate, userex)
{
ACE_PRINT_EXCEPTION (userex,
"Unexpected Duplicate Exception!\n");
return -1;
}
ACE_CATCH (TAO_IOP::Invalid_IOR, userex)
{
ACE_PRINT_EXCEPTION (userex,
"Unexpected Invalid_IOR Exception!\n");
return -1;
}
ACE_CATCH (CORBA::SystemException, sysex)
{
ACE_PRINT_EXCEPTION (sysex,
"Unexpected system Exception!!\n");
return -1;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Unexpected ACE_CATCHANY Exception!\n");
return -1;
}
ACE_ENDTRY;
ACE_DEBUG ((LM_DEBUG, "IORManipulation Tests Successfully Completed!\n"));
ACE_DEBUG ((LM_DEBUG, "---------------------------------------------\n"));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -