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"); }
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; }