/** * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ #include "pistache/endpoint.h" #include "pistache/http.h" #include "pistache/router.h" #ifdef __linux__ #include #include #include #endif #include "PetApiImpl.h" #include "StoreApiImpl.h" #include "UserApiImpl.h" #define PISTACHE_SERVER_THREADS 2 #define PISTACHE_SERVER_MAX_PAYLOAD 32768 static Pistache::Http::Endpoint *httpEndpoint; #ifdef __linux__ static void sigHandler(int sig){ switch(sig){ case SIGINT: case SIGQUIT: case SIGTERM: case SIGHUP: default: httpEndpoint->shutdown(); break; } exit(0); } static void setUpUnixSignals(std::vector quitSignals) { sigset_t blocking_mask; sigemptyset(&blocking_mask); for (auto sig : quitSignals) sigaddset(&blocking_mask, sig); struct sigaction sa; sa.sa_handler = sigHandler; sa.sa_mask = blocking_mask; sa.sa_flags = 0; for (auto sig : quitSignals) sigaction(sig, &sa, nullptr); } #endif using namespace org::openapitools::server::api; int main() { #ifdef __linux__ std::vector sigs{SIGQUIT, SIGINT, SIGTERM, SIGHUP}; setUpUnixSignals(sigs); #endif Pistache::Address addr(Pistache::Ipv4::any(), Pistache::Port(8080)); httpEndpoint = new Pistache::Http::Endpoint((addr)); auto router = std::make_shared(); auto opts = Pistache::Http::Endpoint::options() .threads(PISTACHE_SERVER_THREADS); opts.flags(Pistache::Tcp::Options::ReuseAddr); opts.maxPayload(PISTACHE_SERVER_MAX_PAYLOAD); httpEndpoint->init(opts); PetApiImpl PetApiserver(router); PetApiserver.init(); StoreApiImpl StoreApiserver(router); StoreApiserver.init(); UserApiImpl UserApiserver(router); UserApiserver.init(); httpEndpoint->setHandler(router->handler()); httpEndpoint->serve(); httpEndpoint->shutdown(); }