#include #include #include #include #include #include #include #include #include #include #include "myComplexGlobalData.hh" using namespace dice::client; int main(int argc, char * argv[]) { try { DICE::getInstance().setApplicationName("testGlobalDataBulkJob"); DICE::getInstance().initialize(argc, argv); { std::cout << "Connecting to ServiceRegistry"; const char * serviceId = "DICE/QS/GLOBALDATA-DAEMON/1.0"; ServiceRegistry reg; std::cout << "Trying to get service " << serviceId << std::endl; Service::ServiceSptr sv = reg.getService(serviceId); // create global service data for this job ::de::vodafone::dice::registry::DataObjectId did = sv->getFreeServiceDataObjectId(); CORBA::Any dataObject; testdata::MyComplexGlobalData dataObj; dataObj.name = CORBA::string_dup("teststring"); dataObj.data.length(100); for (unsigned int i=0; i<100; i++) { dataObj.data[i].name = CORBA::string_dup("testpoint"); double hugo = M_PI/(i+1); dataObj.data[i].p.x = hugo; dataObj.data[i].p.y = 3.0f * hugo; dataObj.data[i].p.pval.val = M_PI * hugo; dataObj.data[i].f1 = 0.1f; dataObj.data[i].f2 = 0.2f; dataObj.data[i].f3 = 0.3f; } dataObject <<= dataObj; sv->setServiceDataObject(did, dataObject); std::cout << "Stored global data with id " << did << std::endl; // get value from clipboard CORBA::Any_var globalDataAny = sv->getServiceDataObject(did); testdata::MyComplexGlobalData * pvalue; globalDataAny >>= pvalue; testdata::MyComplexGlobalData value; value = *pvalue; std::cout << "Testing values from clipboard " << std:: endl; for (unsigned int i=0; i<100; i++) { std::cout << "point x " << std::setprecision(6) << dataObj.data[i].p.x << "->" << value.data[i].p.x << std:: endl; std::cout << "point y " << std::setprecision(6) << dataObj.data[i].p.y << "->" << value.data[i].p.y << std:: endl; std::cout << "point p " << std::setprecision(6) << dataObj.data[i].p.pval.val << "->" << value.data[i].p.pval.val << std:: endl; assert( std::abs( static_cast(dataObj.data[i].p.y - value.data[i].p.y )) < 1e-5 ); assert( std::abs( static_cast(dataObj.data[i].p.y - value.data[i].p.y )) < 1e-5 ); assert( std::abs( static_cast(dataObj.data[i].p.pval.val - value.data[i].p.pval.val )) < 1e-5 ); } sv->freeServiceDataObject(did); } DICE::getInstance().shutdown(); } catch ( const dice::client::DiceException& de ) { std::cerr << de << std::endl; } // catch ( const CORBA::SystemException& ce ) { // std::cerr << DiceException(ce) << std::endl; // } // catch ( const CORBA::UserException& ce ) { // std::cerr << "Corba Exception: " << std::endl; // } // catch ( const std::exception& se ) { // std::cerr << "Exception: " << se.what()<< std::endl; // } // catch ( ... ) { // std::cerr << "Unknown Exception!" << std::endl; // } return 0; }