Example #1
0
static void ServerSetup(Server& server)
{
    server.BindAndListen(ServerPort);

    // Add the method calls
    MethodManager *methodManager = server.GetMethodManager();
    methodManager->AddFunction( &Add, "add", "Add two numbers");
    methodManager->AddFunction( &Subtract, "subtract", "Subtract two numbers");
    methodManager->AddFunction( &Echo, "echo", "Return the same data that was sent");
}
Example #2
0
int main(int argc, char *argv[])
{
    // Start the logger up first so all other code can be logged
    InitializeLogger();

    // Log the time for the system running
    log_time(INFO);

    // Determine the type of server
    Server *server = 0;

    if (argc < 2)
        server = new AnyHttpServer;  // support all protocols
#if defined(ANYRPC_INCLUDE_JSON)
    else if (strcasecmp(argv[1], "jsonhttp") == 0)
        server = new JsonHttpServer;
    else if (strcasecmp(argv[1], "jsontcp") == 0)
        server = new JsonTcpServer;
#endif // defined(ANYRPC_INCLUDE_JSON)

#if defined(ANYRPC_INCLUDE_XML)
    else if (strcasecmp(argv[1], "xmlhttp") == 0)
        server = new XmlHttpServer;
    else if (strcasecmp(argv[1], "xmltcp") == 0)
        server = new XmlTcpServer;
#endif // defined(ANYRPC_INCLUDE_XML)

#if defined(ANYRPC_INCLUDE_MESSAGEPACK)
    else if (strcasecmp(argv[1], "messagepackhttp") == 0)
        server = new MessagePackHttpServer;
    else if (strcasecmp(argv[1], "messagepacktcp") == 0)
        server = new MessagePackTcpServer;
#endif // defined(ANYRPC_INCLUDE_MESSAGEPACK)

#if defined(ANYRPC_THREADING)
# if defined(ANYRPC_INCLUDE_JSON)
    else if (strcasecmp(argv[1], "jsonhttpmt") == 0)
        server = new JsonHttpServerMT;
    else if (strcasecmp(argv[1], "jsontcpmt") == 0)
        server = new JsonTcpServerMT;
    else if (strcasecmp(argv[1], "jsonhttptp") == 0)
        server = new JsonHttpServerTP;
    else if (strcasecmp(argv[1], "jsontcptp") == 0)
        server = new JsonTcpServerTP;
# endif // defined(ANYRPC_INCLUDE_JSON)

# if defined(ANYRPC_INCLUDE_XML)
    else if (strcasecmp(argv[1], "xmlhttpmt") == 0)
        server = new XmlHttpServerMT;
    else if (strcasecmp(argv[1], "xmltcpmt") == 0)
        server = new XmlTcpServerMT;
    else if (strcasecmp(argv[1], "xmlhttptp") == 0)
        server = new XmlHttpServerTP;
    else if (strcasecmp(argv[1], "xmltcptp") == 0)
        server = new XmlTcpServerTP;
# endif // defined(ANYRPC_INCLUDE_XML)

# if defined(ANYRPC_INCLUDE_MESSAGEPACK)
    else if (strcasecmp(argv[1], "messagepackhttpmt") == 0)
        server = new MessagePackHttpServerMT;
    else if (strcasecmp(argv[1], "messagepacktcpmt") == 0)
        server = new MessagePackTcpServerMT;
    else if (strcasecmp(argv[1], "messagepackhttptp") == 0)
        server = new MessagePackHttpServerTP;
    else if (strcasecmp(argv[1], "messagepacktcptp") == 0)
        server = new MessagePackTcpServerTP;
# endif // defined(ANYRPC_INCLUDE_MESSAGEPACK)

    else if (strcasecmp(argv[1], "anyhttptp") == 0)
        server = new AnyHttpServerTP; // support all protocols with thread pool server

#endif // defined(ANYRPC_THREADING)
    else
        server = new AnyHttpServer;  // support all protocols

    // Add the method calls
    MethodManager *methodManager = server->GetMethodManager();
    methodManager->AddFunction( &Add, "add", "Add two numbers");
    methodManager->AddFunction( &Subtract, "subtract", "Subtract two numbers");
    methodManager->AddMethod( &multiply );
    methodManager->AddFunction( &Wait, "wait", "Delay execution for a given number of milliseconds");
    methodManager->AddFunction( &Echo, "echo", "Return the same data that was sent");

    // Determine the port for the server
    int port = 9000;
    if (argc > 2)
        port = atoi(argv[2]);
    server->BindAndListen(port);

    // Determine the time that the server will run
    int timeout = 30;
    if (argc > 3)
        timeout = atoi(argv[3]);

#if defined(ANYRPC_THREADING)
    // Run the server as a separate thread
    server->StartThread();
    this_thread::sleep_for( chrono::seconds(timeout) );
    server->StopThread();
#else
    // Run the server for a specified number of milliseconds
    server->Work(timeout * 1000);
#endif

    // clean up
    delete server;

    return 0;
}