/***************************************************************************
                 ulxridl_test.cpp  -  test generated files
                             -------------------
    begin                : Sun Jul 23 2007
    copyright            : (C) 2002-2007 by Ewald Arnold
    email                : ulxmlrpcpp@ewald-arnold.de

    $Id: ulxridl_test.cpp 1034 2007-07-29 14:19:13Z ewald-arnold $

 ***************************************************************************/


//#define ULXR_UNICODE_ONLY_HELPERS
#include <ulxmlrpcpp/ulxmlrpcpp.h> // always first

#include <iostream>

#include <ulxmlrpcpp/ulxr_tcpip_connection.h>
#include <ulxmlrpcpp/ulxr_http_protocol.h>
#include <ulxmlrpcpp/ulxr_requester.h>
#include <ulxmlrpcpp/ulxr_except.h>
#include <ulxmlrpcpp/ulxr_mtrpc_server.h>

#include "../ulxr2xml/ulxridl_test.h"
#include "new-meth/UlxrIdlTest_ulxr_client.h"
#include "new-meth/UlxrIdlTest_ulxr_server.h"
#include "new-meth/UlxrIdlTestFuncs_ulxr_client.h"
#include "new-meth/UlxrIdlTestFuncs_ulxr_server.h"


ulxr::MultiThreadRpcServer *my_handler;

namespace myname {

UlxrIdlTest::UlxrIdlTest()
  : IdlInterface("name")
{}

UlxrIdlTest::UlxrIdlTest(int i, const std::string &s)
  : IdlInterface("name")
{}

UlxrIdlTest::UlxrIdlTest(int i, const std::string &s, long last)
  : IdlInterface("name")
{}

UlxrIdlTest::~UlxrIdlTest()
{}

void UlxrIdlTest::first_url4()
{
  ULXR_COUT << ULXR_PCHAR("got signal to shut down\n");
  my_handler->terminateAllThreads();
}

std::string * UlxrIdlTest::first_url4(int i)
{ return 0; }

std::string * UlxrIdlTest::first_url4(long li)
{ return 0; }

const char * UlxrIdlTest::first_url4(float li)
{ return 0; }

wchar_t * const UlxrIdlTest::first_url4(double li)
{ return 0; }

std::string UlxrIdlTest::constTest() const
{
  throw ulxr::RuntimeException(123, ULXR_PCHAR("my exception"));
}

std::string & UlxrIdlTest::constRefTest() const
{  static std::string s; return s; }

long* UlxrIdlTest::not_firstViewConst() const
{ return 0; }

float* *UlxrIdlTest::not_firstView()
{ return 0; }

double* UlxrIdlTest::not_nextView()
{ return 0; }

bool* UlxrIdlTest::not_nextView2()
{ return 0; }

long* UlxrIdlTest::firstViewConst() const
{ return 0; }

std::string* UlxrIdlTest::firstView()
{ return 0; }

std::wstring* UlxrIdlTest::nextView1(int i, long * l, std::string &s, const bool * b, char c) const
{ return 0; }

std::basic_string<char>* UlxrIdlTest::nextView2(int i, long l, std::string &s, bool * const b, char c) const
{ return 0; }

void UlxrIdlTest::getNumObjects(std::string s)
{}

const std::basic_string<wchar_t>* UlxrIdlTest::getObject(const std::string &s)
{
  static std::wstring rs;
  rs = L"getObject-";
  rs += ulxr::getUnicode(s);
  return &rs;
}

int UlxrIdlTest::getNumPages(const std::wstring &s) throw(int, long)
{ return 0; }

const std::string * UlxrIdlTest::last_url4()
{ return 0; }

std::string * UlxrIdlTest::last_url4(int i)
{ return 0; }

std::string * UlxrIdlTest::last_url4(long li) throw(int, float)
{ return 0; }

}

//-------------------------------------

// namespace funcs {
//
// void free_function1(int i)
// {
// }
//
// long free_function1(long i, float f)
// {
//   return -2l + (long) i + (long) f;
// }
//
// }

// -----------------------------------------------------------------------------

int main(int argc, char**argv)
{
  ulxr::intializeLog4J(argv[0]);

  ulxr::CppString host = ULXR_PCHAR("localhost");
  unsigned port = 32010;

  // --

  ulxr::TcpIpConnection client_conn (false, host, port);
  ulxr::HttpProtocol client_prot(&client_conn);
  ulxr::Requester requester(&client_prot);

  ulxr::CppString user = ULXR_CHAR("ali-baba");
  ulxr::CppString pass = ULXR_CHAR("open-sesame");
  ulxr::CppString realm = ULXR_CHAR("/RPC2");

  UlxrIdlTestClient client(requester, realm, user, pass);
  UlxrIdlTestFuncs_setClientCredentials(requester, realm, user, pass);

  // --

  myname::UlxrIdlTest worker;

  ulxr::TcpIpConnection server_conn (true, host, port);
  ulxr::HttpProtocol server_prot(&server_conn);

  ulxr::MultiThreadRpcServer handler(&server_prot, 2, false);
  my_handler = &handler;
  UlxrIdlTestServer server(handler, worker);
  UlxrIdlTestFuncs_setupServerMethods(handler);

  handler.dispatchAsync();
  sleep(1);

  std::wstring ws = *client.getObject("client-test");
  std::cout << "return from remote call: " << ulxr::getLatin1(ws) << std::endl;

  try
  {
    client.constTest();
  }
  catch(std::exception &ex)
  {
    std::cout << "exception occured: " << ulxr::getLatin1(ULXR_GET_STRING(ex.what())) << std::endl;
  }
  catch(...)
  {
    std::cout << "unknown excption occured\n";
  }

  ulxr::CppString ss = ULXR_PCHAR("afasfasfd");
  std::cout << "sizeof(CppString[0]) = " << sizeof(ss[0]) << "\n";

  client.first_url4();
  client.first_url4();

  handler.waitAsync(false, true);
  UlxrIdlTestFuncs_removeServerMethods(handler);

  return 0;
}




syntax highlighted by Code2HTML, v. 0.9.1