// mapped to: std::basic_string<char> * nextView2(int i, long int l, std::string & s, bool * const b, char c) const;
ulxr::MethodResponse
  UlxrIdlTestServer::nextView2 (const ulxr::MethodCall &calldata)
{
  try
  {
    int p0 = (int) ulxr::Integer(calldata.getParam(0)).getInteger();
    long int p1 = (long int) ulxr::Integer(calldata.getParam(1)).getInteger();
    std::string p2 = (std::string) ulxr::getLatin1(ulxr::RpcString(calldata.getParam(2)).getString());
    bool p3 = (bool) ulxr::Boolean(calldata.getParam(3)).getBoolean();
    char p4 = (char) ulxr::Integer(calldata.getParam(4)).getInteger();
    std::string retval = *server.nextView2(p0, p1, p2, &p3, p4);
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'std::basic_string<char> * nextView2(int i, long int l, std::string & s, bool * const b, char c) const;'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'std::basic_string<char> * nextView2(int i, long int l, std::string & s, bool * const b, char c) const;'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
ULXR_API_IMPL0
  TcpIpConnection::TcpIpConnection(bool I_am_server, const CppString &dom, unsigned prt)
  : Connection()
  , pimpl(new PImpl)
{
  ULXR_TRACE(ULXR_PCHAR("TcpIpConnection(bool, string, uint)") << dom << ULXR_PCHAR(" ") << pimpl->port);
  init(prt);

  pimpl->remote_name = dom;

  struct hostent *hp = getHostAdress(dom);
  if (hp == 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Host adress not found: ")) + pimpl->serverdomain, 500);
  memcpy(&(pimpl->hostdata.sin_addr), hp->h_addr_list[0], hp->h_length);

  if (I_am_server)
  {
    pimpl->server_data = new ServerSocketData(socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
    if (getServerHandle() < 0)
      throw ConnectionException(SystemError,
                                ulxr_i18n(ULXR_PCHAR("Could not create socket: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#ifdef ULXR_REUSE_SOCKET
    int sockOpt = 1;
    if (::setsockopt(getServerHandle(), SOL_SOCKET, SO_REUSEADDR,
                     (const char*)&sockOpt, sizeof(sockOpt)) < 0)
      throw ConnectionException(SystemError,
                                ulxr_i18n(ULXR_PCHAR("Could not set reuse flag for socket: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#endif

    int iOptVal = getTimeout() * 1000;
    int iOptLen = sizeof(int);
    ::setsockopt(getServerHandle(), SOL_SOCKET, SO_RCVTIMEO, (char*)&iOptVal, iOptLen);
    ::setsockopt(getServerHandle(), SOL_SOCKET, SO_SNDTIMEO, (char*)&iOptVal, iOptLen);

    if((::bind(getServerHandle(), (sockaddr*) &pimpl->hostdata, sizeof(pimpl->hostdata))) < 0)
      throw ConnectionException(SystemError,
                                ulxr_i18n(ULXR_PCHAR("Could not bind adress: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);

    listen(getServerHandle(), 5);
  }
}
ULXR_API_IMPL(void) TcpIpConnection::open()
{
  ULXR_TRACE(ULXR_PCHAR("open"));
  if (isOpen() )
    throw RuntimeException(ApplicationError,
                           ulxr_i18n(ULXR_PCHAR("Attempt to open an already open connection")));

  if (pimpl->server_data != 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Connection is NOT prepared for client mode")), 500);
//  resetConnection();

  setHandle(socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
  if (getHandle() < 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not create socket: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  int iOptVal = getTimeout() * 1000;
  int iOptLen = sizeof(int);
  ::setsockopt(getHandle(), SOL_SOCKET, SO_RCVTIMEO, (char*)&iOptVal, iOptLen);
  ::setsockopt(getHandle(), SOL_SOCKET, SO_SNDTIMEO, (char*)&iOptVal, iOptLen);
  doTcpNoDelay();

  if(connect(getHandle(), (struct sockaddr *)&pimpl->hostdata, sizeof(pimpl->hostdata)) < 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not connect: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  ULXR_TRACE(ULXR_PCHAR("/open.peername"));
#ifdef ULXR_ENABLE_GET_PEERNAME
  pimpl->remotedata_len = sizeof(pimpl->remotedata);
  if(getpeername(getHandle(),
                 (struct sockaddr *)&pimpl->remotedata,
                 &pimpl->remotedata_len)<0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get peer data: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#ifdef __BORLANDC__
  pimpl->remote_name = ULXR_PCHAR("<remote-host>");  // FIXME, not working
  host = 0;
  host;
#else
  else
  {
// mapped to: const std::string * last_url4();   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestServer::last_url4_ovr0 (const ulxr::MethodCall &calldata)
{
  try
  {
    std::string retval = *server.last_url4();
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'const std::string * last_url4();'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'const std::string * last_url4();'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: wchar_t * const first_url4(double li);   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestServer::first_url4_ovr0 (const ulxr::MethodCall &calldata)
{
  try
  {
    double p0 = (double) ulxr::Double(calldata.getParam(0)).getDouble();
    std::wstring retval = server.first_url4(p0);
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'wchar_t * const first_url4(double li);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'wchar_t * const first_url4(double li);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: const std::basic_string<wchar_t> * getObject(const std::string & s);
ulxr::MethodResponse
  UlxrIdlTestServer::getObject (const ulxr::MethodCall &calldata)
{
  try
  {
    std::string p0 = (std::string) ulxr::getLatin1(ulxr::RpcString(calldata.getParam(0)).getString());
    std::wstring retval = *server.getObject(p0);
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'const std::basic_string<wchar_t> * getObject(const std::string & s);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'const std::basic_string<wchar_t> * getObject(const std::string & s);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: std::string * first_url4(long int li);   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestServer::first_url4_ovr2 (const ulxr::MethodCall &calldata)
{
  try
  {
    long int p0 = (long int) ulxr::Integer(calldata.getParam(0)).getInteger();
    std::string retval = *server.first_url4(p0);
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'std::string * first_url4(long int li);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'std::string * first_url4(long int li);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
ULXR_API_IMPL0 TcpIpConnection::TcpIpConnection(bool I_am_server, long adr, unsigned prt)
  : Connection()
  , pimpl(new PImpl)
{
  ULXR_TRACE(ULXR_PCHAR("TcpIpConnection(bool, long, uint)") << adr << ULXR_PCHAR(" ") << pimpl->port);
  init(prt);

  pimpl->hostdata.sin_addr.s_addr = htonl(adr);

  if (I_am_server)
  {
    pimpl->server_data = new ServerSocketData(socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
    if (getServerHandle() < 0)
      throw ConnectionException(SystemError,
                                ulxr_i18n(ULXR_PCHAR("Could not create socket: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);

#ifdef ULXR_REUSE_SOCKET
    int sockOpt = 1;
    if (::setsockopt(getServerHandle(), SOL_SOCKET, SO_REUSEADDR,
                     (const char*)&sockOpt, sizeof(sockOpt)) < 0)
      throw ConnectionException(SystemError,
                                      ulxr_i18n(ULXR_PCHAR("Could not set reuse flag for socket: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#endif

    int iOptVal = getTimeout() * 1000;
    int iOptLen = sizeof(int);
    ::setsockopt(getServerHandle(), SOL_SOCKET, SO_RCVTIMEO, (char*)&iOptVal, iOptLen);
    ::setsockopt(getServerHandle(), SOL_SOCKET, SO_SNDTIMEO, (char*)&iOptVal, iOptLen);

    if((::bind(getServerHandle(), (sockaddr*) &pimpl->hostdata, sizeof(pimpl->hostdata))) < 0)
      throw ConnectionException(SystemError,
                                ulxr_i18n(ULXR_PCHAR("Could not bind adress: "))
                                     + ULXR_GET_STRING(getErrorString(getLastError())), 500);

    ::listen(getServerHandle(), 5);
  }
}
// mapped to: std::string * inline_func::free_function2(long int * i, float f);   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestFuncs_inline_func__free_function2 (const ulxr::MethodCall &calldata)
{
  try
  {
    long int p0 = (long int) ulxr::Integer(calldata.getParam(0)).getInteger();
    float p1 = (float) ulxr::Double(calldata.getParam(1)).getDouble();
    std::string retval = *inline_func::free_function2(&p0, p1);
    return ulxr::MethodResponse (ulxr::RpcString (ULXR_GET_STRING(retval)));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'std::string * inline_func::free_function2(long int * i, float f);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'std::string * inline_func::free_function2(long int * i, float f);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
ULXR_API_IMPL(void) TcpIpConnection::asciiToInAddr(const char *address, struct in_addr &saddr)
{
  memset (&saddr, 0, sizeof(in_addr));
  struct hostent *host;

  /* First try it as aaa.bbb.ccc.ddd. */
  saddr.s_addr = inet_addr(address);
  if ((int)saddr.s_addr == -1)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not perform inet_addr(): "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

#ifndef ULXR_OMIT_REENTRANT_PROTECTOR
  Mutex::Locker lock(gethostbynameMutex);
#endif

  host = gethostbyname(address);
  if (host == 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not perform gethostbyname(): "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  memmove((void*)&saddr, host->h_addr_list, sizeof(in_addr));
}
Example #11
0
ULXR_API_IMPL(ValueParserBase::ValueState *) ValueParser::getTopValueState() const
{
  ULXR_TRACE(ULXR_PCHAR("ValueParser::getTopState() size: ") << states.size());
#ifdef DEBUG
  ValueState *vs = dynamic_cast<ValueState*> (states.top());      // be careful about type
  if (vs == 0)
  {
    ULXR_TRACE(ULXR_PCHAR("ValueParser::getTopState(), top state: ") << (void*) states.top());
    ULXR_TRACE(ULXR_PCHAR("ValueParser::getTopState(): state <> ValueState"));
    ULXR_TRACE(ULXR_PCHAR("ValueParser::getTopState(): state == ") << ULXR_GET_STRING(typeid(states.top()).name()));
  }
  return vs;
#else
  return reinterpret_cast<ValueParserBase::ValueState*> (states.top());  // dont care anymore
#endif
}
// mapped to: void first_url4();   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestServer::first_url4_ovr4 (const ulxr::MethodCall &calldata)
{
  try
  {
    server.first_url4();
    return ulxr::MethodResponse (ulxr::Void());
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'void first_url4();'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'void first_url4();'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: long int * firstViewConst() const;
ulxr::MethodResponse
  UlxrIdlTestServer::firstViewConst (const ulxr::MethodCall &calldata)
{
  try
  {
    long int retval = *server.firstViewConst();
    return ulxr::MethodResponse (ulxr::Integer (retval));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'long int * firstViewConst() const;'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'long int * firstViewConst() const;'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: int getNumPages(const std::wstring & s);
ulxr::MethodResponse
  UlxrIdlTestServer::getNumPages (const ulxr::MethodCall &calldata)
{
  try
  {
    std::wstring p0 = (std::wstring) ulxr::getUnicode(ulxr::RpcString(calldata.getParam(0)).getString());
    long int retval = server.getNumPages(p0);
    return ulxr::MethodResponse (ulxr::Integer (retval));
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'int getNumPages(const std::wstring & s);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'int getNumPages(const std::wstring & s);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: void getNumObjects(std::string s);
ulxr::MethodResponse
  UlxrIdlTestServer::getNumObjects (const ulxr::MethodCall &calldata)
{
  try
  {
    std::string p0 = (std::string) ulxr::getLatin1(ulxr::RpcString(calldata.getParam(0)).getString());
    server.getNumObjects(p0);
    return ulxr::MethodResponse (ulxr::Void());
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'void getNumObjects(std::string s);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'void getNumObjects(std::string s);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
// mapped to: void funcs::free_function1(int i);   (there are overloaded methods)
ulxr::MethodResponse
  UlxrIdlTestFuncs_funcs__free_function1_ovr0 (const ulxr::MethodCall &calldata)
{
  try
  {
    int p0 = (int) ulxr::Integer(calldata.getParam(0)).getInteger();
    funcs::free_function1(p0);
    return ulxr::MethodResponse (ulxr::Void());
  }
  catch(std::exception &ex)
  {
    ulxr::CppString s = ULXR_PCHAR("C++ exception caught when invoking 'void funcs::free_function1(int i);'\n  ");
    s += ULXR_GET_STRING(ex.what());
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
  catch(...)
  {
    ulxr::CppString s = ULXR_PCHAR("Unknown exception caught when invoking 'void funcs::free_function1(int i);'");
    return ulxr::MethodResponse(ulxr::ApplicationError, s);
  }
}
Example #17
0
int main(int argc, char * argv [])
{
  ulxr::intializeLog4J(argv[0]);

  int success = 0;

#ifdef STRESS_IT
  for (int i= 0; i < 1000; ++i)
  {
#endif
    try
    {
      ULXR_COUT << ULXR_PCHAR("Testing patterns\n");

      ULXR_COUT << ULXR_PCHAR("boolPattern\n") << std::flush;
      testPattern(boolPattern, sizeof(boolPattern));

      ULXR_COUT << ULXR_PCHAR("int1Pattern\n");
      testPattern(int1Pattern, sizeof(int1Pattern));

      ULXR_COUT << ULXR_PCHAR("int2Pattern\n");
      testPattern(int2Pattern, sizeof(int2Pattern));

      ULXR_COUT << ULXR_PCHAR("doublePattern\n");
      testPattern(doublePattern, sizeof(doublePattern));

      ULXR_COUT << ULXR_PCHAR("stringPattern\n");
      testPattern(stringPattern, sizeof(stringPattern));

      ULXR_COUT << ULXR_PCHAR("base64Pattern\n");
      testPattern(base64Pattern, sizeof(base64Pattern));

      ULXR_COUT << ULXR_PCHAR("datePattern\n");
      testPattern(datePattern, sizeof(datePattern));

      ULXR_COUT << ULXR_PCHAR("struct1Pattern\n");
      testPattern(struct1Pattern, sizeof(struct1Pattern));

      ULXR_COUT << ULXR_PCHAR("struct2Pattern\n");
      testPattern(struct2Pattern, sizeof(struct2Pattern));

      ULXR_COUT << ULXR_PCHAR("arrayPattern\n");
      testPattern(arrayPattern, sizeof(arrayPattern));

      ULXR_COUT << ULXR_PCHAR("callPattern\n");
      testCallPattern(callPattern, sizeof(callPattern));

      ULXR_COUT << ULXR_PCHAR("emptyCallPattern\n");
      testCallPattern(emptyCallPattern, sizeof(emptyCallPattern));

      ULXR_COUT << ULXR_PCHAR("respPattern\n");
      testRespPattern(respPattern, sizeof(respPattern));

      ULXR_COUT << ULXR_PCHAR("implPattern\n");
      testPattern(implPattern, sizeof(implPattern));

      ULXR_COUT << ULXR_PCHAR("emptyArrayPattern\n");
      testRespPattern(emptyArrayPattern, sizeof(emptyArrayPattern));

      ULXR_COUT << ULXR_PCHAR("emptyRespPattern\n");
      testRespPattern(emptyRespPattern, sizeof(emptyRespPattern));

      ULXR_COUT << ULXR_PCHAR("emptyStructPattern\n");
      testRespPattern(emptyStructPattern, sizeof(emptyStructPattern));

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");

      ULXR_COUT << ULXR_PCHAR("MethodResponse abc\n");

      ulxr::MethodResponse mr1(123, ULXR_PCHAR("faultstr_m"));
      ULXR_COUT << ulxr::binaryDebugOutput(mr1.getWbXml());
      ULXR_COUT << std::endl << mr1.getXml(0) << std::endl;

      ulxr::MethodResponse mr2(ulxr::Integer(1));
      ULXR_COUT << ulxr::binaryDebugOutput(mr2.getWbXml());
      ULXR_COUT << std::endl << mr2.getXml(0) << std::endl;

      ulxr::MethodResponse mr3;
      ULXR_COUT << ulxr::binaryDebugOutput(mr3.getWbXml());
      ULXR_COUT << std::endl << mr3.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");

      ulxr::MethodCall mc (ULXR_PCHAR("test.call"));
      ULXR_COUT << ulxr::binaryDebugOutput(mc.getWbXml());

      ULXR_COUT << std::endl << mc.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("====================================================\n");

      ulxr::Boolean b(true);
      ulxr::Integer i(123);
      ulxr::Double d(123.456);
      ulxr::RpcString s("<>&\"\'string<>&\"\'");
      ulxr::DateTime dt(ULXR_PCHAR("20020310T10:23:45"));
      ulxr::Base64 b64(ULXR_PCHAR("ABASrt466a90"));
      ulxr::Struct st;
      ulxr::Array ar;

      ULXR_COUT << ulxr::binaryDebugOutput(b.getWbXml()) << std::endl;
      ULXR_COUT << b.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(i.getWbXml()) << std::endl;
      ULXR_COUT << i.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(d.getWbXml()) << std::endl;
      ULXR_COUT << d.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(s.getWbXml()) << std::endl;
      ULXR_COUT << s.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(dt.getWbXml()) << std::endl;
      ULXR_COUT << dt.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(b64.getWbXml()) << std::endl;
      ULXR_COUT << b64.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(st.getWbXml()) << std::endl;
      ULXR_COUT << st.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("----------------------------------------------------\n");
      ULXR_COUT << ulxr::binaryDebugOutput(ar.getWbXml()) << std::endl;
      ULXR_COUT << ar.getXml(0) << std::endl;

      ULXR_COUT << ULXR_PCHAR("====================================================\n");

      ULXR_COUT << "wbToken_Value   " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Value) << std::endl;
      ULXR_COUT << "wbToken_Array   " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Array) << std::endl;
      ULXR_COUT << "wbToken_Data    " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Data) << std::endl;
      ULXR_COUT << "wbToken_Struct  " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Struct) << std::endl;
      ULXR_COUT << "wbToken_Member  " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Member) << std::endl;
      ULXR_COUT << "wbToken_Name    " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Name) << std::endl;
      ULXR_COUT << "wbToken_Boolean " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Boolean) << std::endl;
      ULXR_COUT << "wbToken_Int     " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Int) << std::endl;
      ULXR_COUT << "wbToken_I4      " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_I4) << std::endl;
      ULXR_COUT << "wbToken_Double  " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Double) << std::endl;
      ULXR_COUT << "wbToken_String  " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_String) << std::endl;
      ULXR_COUT << "wbToken_Base64  " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Base64) << std::endl;
      ULXR_COUT << "wbToken_Date    " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_Date) << std::endl;
      ULXR_COUT << std::endl;

      ULXR_COUT << "wbToken_MethodCall " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodCallParserWb::wbToken_MethodCall) << std::endl;
      ULXR_COUT << "wbToken_MethodName " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodCallParserWb::wbToken_MethodName) << std::endl;
      ULXR_COUT << "wbToken_Params     " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodCallParserWb::wbToken_Params) << std::endl;
      ULXR_COUT << "wbToken_Param      " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodCallParserWb::wbToken_Param) << std::endl;
      ULXR_COUT << std::endl;

      ULXR_COUT << "wbToken_MethodResponse " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodResponseParserWb::wbToken_MethodResponse) << std::endl;
      ULXR_COUT << "wbToken_Fault          " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodResponseParserWb::wbToken_Fault) << std::endl;
      ULXR_COUT << "wbToken_Params         " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodResponseParserWb::wbToken_Params) << std::endl;
      ULXR_COUT << "wbToken_Param          " << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodResponseParserWb::wbToken_Param) << std::endl;
      ULXR_COUT << std::endl;

      ULXR_COUT << "wbToken_ValueParserLast "
                << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::ValueParserWb::wbToken_ValueParserLast) << std::endl;

      ULXR_COUT << "wbToken_CallParserLast "
                << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodCallParserWb::wbToken_CallParserLast) << std::endl;

      ULXR_COUT << "wbToken_ResponseParserLast "
                << ulxr::HtmlFormHandler::makeHexNumber((unsigned char)ulxr::MethodResponseParserWb::wbToken_ResponseParserLast) << std::endl;


    }

    catch(ulxr::Exception &ex)
    {
       ULXR_COUT << ULXR_PCHAR("Error occured: ")
                 << ULXR_GET_STRING(ex.why()) << std::endl;
       success= 1;
    }
#ifdef STRESS_IT
  }
#endif

  return success;
}
#ifdef ULXR_ENABLE_GET_PEERNAME
  pimpl->remotedata_len = sizeof(pimpl->remotedata);
  if(getpeername(getHandle(),
                 (struct sockaddr *)&pimpl->remotedata,
                 &pimpl->remotedata_len)<0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get peer data: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#ifdef __BORLANDC__
  pimpl->remote_name = ULXR_PCHAR("<remote-host>");  // FIXME, not working
  host = 0;
  host;
#else
  else
  {
    ULXR_TRACE(ULXR_PCHAR("/open.hostby ") << ULXR_GET_STRING(inet_ntoa(pimpl->remotedata.sin_addr))
               << ULXR_PCHAR(":") << HtmlFormHandler::makeNumber(ntohs(pimpl->remotedata.sin_port)));

#ifndef ULXR_OMIT_REENTRANT_PROTECTOR
  Mutex::Locker lock(gethostbyaddrMutex);
#endif

    struct hostent *host = 0;
#ifdef ULXR_ENABLE_DNS_LOOKUP
    host = gethostbyaddr((char*)&pimpl->remotedata.sin_addr,
                         sizeof(pimpl->remotedata.sin_addr),
                         AF_INET);
#endif

    if (0 == host)
    {
Example #19
0
  ValueParser::testStartElement(const XML_Char* name, const XML_Char** /* atts */)
{
  ULXR_TRACE(ULXR_PCHAR("ValueParser::testStartElement(const XML_Char*, const char**)")
             << ULXR_PCHAR("\n  name: ")
             << ULXR_GET_STRING(name)
            );
  switch(getTopValueState()->getParserState() )
  {
    case eNone:
      if (strcmp(name, "value") == 0)
        states.push(new ValueState(eValue));
      else
        return false;
    break;

    case eValue:
      if (strcmp(name, "array") == 0)
        states.push(new ValueState(eArray));

      else if (strcmp(name, "struct") == 0)
        states.push(new ValueState(eStruct));

      else if (strcmp(name, "boolean") == 0)
        states.push(new ValueState(eBoolean));

      else if (strcmp(name, "int") == 0)
        states.push(new ValueState(eInt));

      else if (strcmp(name, "i4") == 0)
        states.push(new ValueState(eI4));

      else if (strcmp(name, "double") == 0)
        states.push(new ValueState(eDouble));

      else if (strcmp(name, "string") == 0)
        states.push(new ValueState(eString));

      else if (strcmp(name, "base64") == 0)
        states.push(new ValueState(eBase64));

      else if (strcmp(name, "dateTime.iso8601") == 0)
        states.push(new ValueState(eDate));

      else
        return false;
    break;

    case eStruct:
      if (strcmp(name, "member") == 0)
      {
        if (getTopValueState()->getValue() == 0)  // first closing member adds struct-item
          getTopValueState()->takeValue(new Value(Struct()), false);
        states.push(new MemberState(eMember, getTopValueState()->getValue()));
      }
      else
        return false;
    break;

    case eMember:
      if (strcmp(name, "name") == 0)
        states.push(new ValueState(eName));

      else if (strcmp(name, "value") == 0)
        states.push(new ValueState(eValue));

      else
        return false;

    break;

    case eArray:
      if (strcmp(name, "data") == 0)
        states.push(new ArrayState(eData));
      else
        return false;
    break;

    case eData:
      if (strcmp(name, "value") == 0)  // closing value adds data-items
        states.push(new ValueState(eValue));
      else
        return false;
    break;

    default:
        return false;
  }

  return true;
}
ULXR_API_IMPL(void) TcpIpConnection::init(unsigned prt)
{
  ULXR_TRACE(ULXR_PCHAR("init"));
#if defined(__WIN32__)  && !defined (ULXR_NO_WSA_STARTUP)
  WORD wVersionRequested;
  WSADATA wsaData;
  wVersionRequested = MAKEWORD( 2, 0 );

  if (WSAStartup( wVersionRequested, &wsaData) != 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not initialize Windows sockets: "))
                                + ULXR_GET_STRING(getErrorString(getLastError())), 500);
#endif

  pimpl->server_data = 0;
  setTcpNoDelay(false);
  pimpl->serverdomain = ULXR_PCHAR("");
  pimpl->remote_name = ULXR_PCHAR("");
  setTimeout(10);
  pimpl->port = prt;
  pimpl->hostdata_len = sizeof(pimpl->hostdata);
  pimpl->remotedata_len = sizeof(pimpl->remotedata);
  memset(&pimpl->hostdata, 0, sizeof(pimpl->hostdata));
  memset(&pimpl->remotedata, 0, sizeof(pimpl->remotedata));
  pimpl->hostdata.sin_port = htons(pimpl->port);
  pimpl->hostdata.sin_family = AF_INET;

  char buffer [1000];
  memset(buffer, 0, sizeof(buffer));
  int ret = gethostname(buffer, sizeof(buffer)-1);
  if (ret != 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get host name: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  pimpl->host_name = ULXR_GET_STRING(buffer);

#if defined(__SUN__)

  long status = sysinfo(SI_SRPC_DOMAIN ,buffer, sizeof(buffer)-1);
  if (status == -1)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get domain name: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  if (buffer[0] != 0)
  {
    pimpl->host_name += ULXR_PCHAR(".");
    pimpl->host_name += ULXR_GET_STRING(buffer);
  }

#elif defined(__unix__) || defined(__CYGWIN__)

  ret = getdomainname(buffer, sizeof(buffer)-1);
  if (ret != 0)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get domain name: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);

  if (buffer[0] != 0)
  {
    pimpl->host_name += ULXR_PCHAR(".");
    pimpl->host_name += ULXR_GET_STRING(buffer);
  }

#elif _WIN32

#ifndef ULXR_OMIT_REENTRANT_PROTECTOR
  Mutex::Locker lock(gethostbynameMutex);
#endif

  struct hostent *hostEntPtr = gethostbyname(getLatin1(pimpl->host_name).c_str());
  if (!hostEntPtr)
    throw ConnectionException(SystemError,
                              ulxr_i18n(ULXR_PCHAR("Could not get host+domain name: "))
                                   + ULXR_GET_STRING(getErrorString(getLastError())), 500);
  pimpl->host_name = ULXR_GET_STRING(hostEntPtr->h_name);

#else
# pragma message ("don't know how to determine the domain name")
#endif
}
Example #21
0
Requester::waitForResponse(Protocol *protocol, bool wbxml_mode)
{
  ULXR_TRACE(ULXR_PCHAR("waitForResponse(Protocol, wbxml)"));
  char buffer[ULXR_RECV_BUFFER_SIZE];
  char *buff_ptr;

  std::auto_ptr<XmlParserBase> parser;
  MethodResponseParserBase *rpb = 0;
  if (wbxml_mode)
  {
    ULXR_TRACE(ULXR_PCHAR("waitForResponse in WBXML"));
    MethodResponseParserWb *rp = new MethodResponseParserWb();
    rpb = rp;
#ifdef _MSC_VER
  std::auto_ptr<XmlParserBase> temp(rp);
  parser = temp;
#else
    parser.reset(rp);
#endif
  }
  else
  {
    ULXR_TRACE(ULXR_PCHAR("waitForResponse in XML"));
    MethodResponseParser *rp = new MethodResponseParser();
    rpb = rp;
#ifdef _MSC_VER
    std::auto_ptr<XmlParserBase> temp(rp);
    parser = temp;
#else
    parser.reset(rp);
#endif
  }

  bool done = false;
  long readed;
  while (!done && protocol->hasBytesToRead()
               && ((readed = protocol->readRaw(buffer, sizeof(buffer))) > 0) )
  {
    buff_ptr = buffer;
    while (readed > 0)
    {
      Protocol::State state = protocol->connectionMachine(buff_ptr, readed);
      if (state == Protocol::ConnError)
      {
        done = true;
        throw ConnectionException(TransportError, ulxr_i18n(ULXR_PCHAR("network problem occured")), 400);
      }

      else if (state == Protocol::ConnSwitchToBody)
      {
#ifdef ULXR_SHOW_READ
        Cpp8BitString super_data (buff_ptr, readed);
        while ((readed = protocol->readRaw(buffer, sizeof(buffer))) > 0)
          super_data.append(buffer, readed);
        ULXR_DOUT_READ(ULXR_PCHAR("superdata 3 start:\n"));

        if (wbxml_mode)
        {
           ULXR_DOUT_READ(binaryDebugOutput(super_data));
        }
        else
        {
          ULXR_DOUT_READ(ULXR_GET_STRING(super_data));
        }
        ULXR_DOUT_READ(ULXR_PCHAR("superdata 3 end:\n") );
#endif
        if (!protocol->hasBytesToRead())
        {
          throw ConnectionException(NotConformingError,
                                    ulxr_i18n(ULXR_PCHAR("Content-Length of message not available")), 411);
        }

        CppString s;
        if (!protocol->responseStatus(s))
          throw ConnectionException(TransportError, s, 500);

      }

      else if (state == Protocol::ConnBody)
      {
        ULXR_DOUT_XML(ULXR_GET_STRING(std::string(buff_ptr, readed)));
        if (!parser->parse(buff_ptr, readed, false))
        {
          throw XmlException(parser->mapToFaultCode(parser->getErrorCode()),
                             ulxr_i18n(ULXR_PCHAR("Problem while parsing xml response")),
                             parser->getCurrentLineNumber(),
                             ULXR_GET_STRING(parser->getErrorString(parser->getErrorCode())));
        }
        readed = 0;
      }
    }

    if (!protocol->hasBytesToRead())
//        || parser->isComplete())
      done = true;
  }

  if (protocol->isOpen() && !protocol->isPersistent() )
    protocol->close();

  return rpb->getMethodResponse();
}
Example #22
0
int main(int argc, char * argv [])
{
  try
  {
     ulxr::intializeLog4J(argv[0]);

     ULXR_COUT << ULXR_PCHAR("sizeof(<string>): " << sizeof(ulxr::Char) << std::endl);

     ulxr_time_t tim = ulxr_time(0);
     ulxr::DateTime dt(tim);
     ULXR_COUT << ULXR_PCHAR("Current time as DateTime: ") << dt.getDateTime() << std::endl;

     ulxr::CppString s0;
     for (unsigned ii = 0; ii < 256; ++ii)
       s0 += ii;
//     ULXR_COUT << s0 << std::endl;

     ulxr::CppString regression =
        ULXR_PCHAR("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1\r\n")
        ULXR_PCHAR("Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr\r\n")
        ULXR_PCHAR("bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch\r\n")
        ULXR_PCHAR("oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX\r\n")
        ULXR_PCHAR("2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==\r\n");


     ULXR_COUT << ULXR_PCHAR("Encode 64\n");
     ulxr::CppString s64 = ulxr::encodeBase64(s0);
     ULXR_COUT << s64 << std::endl;

     if (regression != s64)
     {
        ULXR_COUT << ULXR_PCHAR("Encode64 comparison with regression string failed.\n");
        success = false;
     }
     else
       ULXR_COUT << ULXR_PCHAR("Encode64 comparison with regression string OK.\n");

     ULXR_COUT << ULXR_PCHAR("Decode 64\n");
     ulxr::CppString ss = ulxr::decodeBase64(s64);
//     ULXR_COUT << ss << std::endl;

     if (s0 == ss)
       ULXR_COUT << ULXR_PCHAR("base ok\n");
     else
     {
       ULXR_COUT << ULXR_PCHAR("base NOT ok\n");
       success = false;
     }
// ����
     s0 = ULXR_PCHAR("-\r=\t#\n+&<>;12����\"\'contains");
     ulxr::CppString se = ulxr::xmlEscape(s0);

     std::cout << std::hex << "s0: ";
     for (unsigned i1 = 0; i1 < s0.length(); ++i1)
       std::cout << (unsigned) (0xff & s0[i1]) << " ";
     std::cout << std::endl;

     std::cout << std::hex << "se: ";
     for (unsigned i2 = 0; i2 < se.length(); ++i2)
       std::cout << (unsigned) (0xff & se[i2]) << " ";
     std::cout << std::dec << std::endl;

     if (se.find(ULXR_PCHAR("contains")) == ulxr::CppString::npos)
     {
       ULXR_COUT << ULXR_PCHAR("xmlEscape NOT ok\n");
       success = false;
     }
     else
       ULXR_COUT << ULXR_PCHAR("xmlEscape ok\n");

     ULXR_COUT << ULXR_PCHAR("Original: ") << s0 << std::endl;
     ULXR_COUT << ULXR_PCHAR("Escaped: ") << se << std::endl;

     if (s0 == ulxr::xmlUnEscape(se))
       ULXR_COUT << ULXR_PCHAR("escape ok\n");
     else
     {
       ULXR_COUT << ULXR_PCHAR("escape NOT ok\n");
       success = false;
     }

     {
       check_malformed(ULXR_PCHAR("abcd&"));
       check_malformed(ULXR_PCHAR("abcd&#x12"));
       check_malformed(ULXR_PCHAR("abcd&#12"));
       check_malformed(ULXR_PCHAR("abcd&#123456789"));
       check_malformed(ULXR_PCHAR("abcd&#x123456789"));
       check_malformed(ULXR_PCHAR("abcd&#123456789;"));
       check_malformed(ULXR_PCHAR("abcd&#x123456789;"));
     }

#if defined(HAVE_ICONV_H) || defined(HAVE_ICONV)

     ulxr::Cpp8BitString s_lat1 = "������{}[]/'����������{}[]/'����";
     ulxr::Cpp8BitString s02 = ulxr::encodingToUtf8(s_lat1, "LATIN1");
     ULXR_COUT << ULXR_PCHAR("s02: ") << ULXR_GET_STRING(s02) << std::endl;
     ULXR_COUT << ULXR_PCHAR("s_lat1: ") << ULXR_GET_STRING(s_lat1) << std::endl;
     ULXR_COUT << ULXR_PCHAR("back to orig: ")
               << ULXR_GET_STRING(ulxr::utf8ToEncoding(s02, "LATIN1"))
               << std::endl;
     if (s_lat1 == ulxr::utf8ToEncoding(s02, "LATIN1"))
       ULXR_COUT << ULXR_PCHAR("encoding ok\n");
     else
       ULXR_COUT << ULXR_PCHAR("encoding NOT ok\n");

#endif

#ifdef ULXR_UNICODE
     ulxr::Cpp16BitString ws0;
     ws0.reserve(0xd800);
     for (unsigned i = 0x00; i < 0xd800; ++i)
       ws0 += i;

     ulxr::RpcString str (ws0);
     ss = str.getString();
     ULXR_COUT << ss.length() << std::endl;

     ulxr::Cpp16BitString wss = str.getUnicodeString();

     ULXR_COUT << ws0.length() << std::endl;
     ULXR_COUT << (int) ws0[0] << std::endl;

     ULXR_COUT << wss.length() << std::endl;
     ULXR_COUT << (int) wss[0] << std::endl;

     if (ws0 == wss)
       ULXR_COUT << ULXR_PCHAR("unicode 1 ok\n");
     else
     {
       ULXR_COUT << ULXR_PCHAR("unicode 1 NOT ok\n");
       success = false;
     }

     {
        ulxr::Cpp8BitString utf8 = ulxr::unicodeToUtf8(ws0);
        wss = ulxr::utf8ToUnicode(utf8);

        if (ws0 == wss)
          ULXR_COUT << ULXR_PCHAR("unicodeToUtf8 ok\n");
        else
        {
          ULXR_COUT << ULXR_PCHAR("utf8ToUnicode NOT ok\n");
          success = false;
        }
     }
#endif

     {
        ulxr::Cpp8BitString s8;
        s8.reserve(0x100);
        for (unsigned i = 0x00; i < 0x100; ++i)
          s8 += i;

        ulxr::Cpp8BitString utf8 = ulxr::asciiToUtf8(s8);
        ulxr::Cpp8BitString s8s = ulxr::utf8ToAscii(utf8);

        if (s8 == s8s)
          ULXR_COUT << ULXR_PCHAR("asciiToUtf8 ok\n");
        else
        {
          ULXR_COUT << ULXR_PCHAR("utf8ToAscii NOT ok\n");
          success = false;
        }
     }

#ifdef ULXR_UNICODE

     ws0 = ULXR_PCHAR("khera>&sd< asd<f>e56&&& \"$����")
           ULXR_PCHAR("\"\"\'&<&>sd w45234908 0xd9f0�)/()/")
           ULXR_PCHAR("()N u6we4\"E!\"%&((>YXC>YXASESGYDX>YVBHJE%W&TW$");

     ulxr::RpcString str2 (ws0);
     ss = str2.getString();
     wss = str2.getUnicodeString();

     if (ws0 == wss)
       ULXR_COUT << ULXR_PCHAR("unicode ok\n");
     else
     {
       ULXR_COUT << ULXR_PCHAR("unicode NOT ok\n");
       success = false;
     }

#endif

     ULXR_COUT << ULXR_PCHAR("Ready.\n");
  }
  catch(ulxr::Exception &ex)
  {
     ULXR_COUT << ULXR_PCHAR("Error occured: ")
               << ULXR_GET_STRING(ex.why()) << std::endl;
     success = false;
  }

  ULXR_COUT << ULXR_PCHAR("Terminating.\n");
  return success ? 0 : 1;
}