forked from loafle/openapi-generator-original
commit c5a0d0f7394aa742fa336fff7e7c1d3049761868 Merge: 8c4991ba3ed f8ff8c87609 Author: William Cheng <wing328hk@gmail.com> Date: Tue Aug 17 18:28:12 2021 +0800 Merge branch 'mustache-linting' of https://github.com/NathanBaulch/openapi-generator into NathanBaulch-mustache-linting commit f8ff8c87609b1ca36fa26fb8474806999638195e Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Thu Aug 5 14:12:47 2021 +1000 Reorder tags that handle missing values commit f5d8a33709d6a3f846a9fe4520b78c3d637051d9 Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Thu Aug 5 14:08:59 2021 +1000 Use dot notation where possible commit 493d14921e2333f3ae19ef6fc89318b7e263a80c Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Thu Aug 5 14:10:49 2021 +1000 Remove empty tags commit 32480dc53f48227d55531b94e307d72671373737 Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Thu Aug 5 10:41:58 2021 +1000 Remove redundant sections commit a8edabd722c34aa094b4aeb11c22664529c3a219 Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Wed Aug 4 22:02:22 2021 +1000 Trim extra EOF new lines commit e89bd7458e3594bf0d30e580bc9408e45b018a57 Author: Nathan Baulch <nathan.baulch@gmail.com> Date: Wed Aug 4 21:59:26 2021 +1000 Trim trailing whitespace
95 lines
2.4 KiB
C++
95 lines
2.4 KiB
C++
/**
|
|
* 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 <vector>
|
|
#include <signal.h>
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#include "PetApiImpl.h"
|
|
#include "StoreApiImpl.h"
|
|
#include "UserApiImpl.h"
|
|
|
|
#define PISTACHE_SERVER_THREADS 2
|
|
#define PISTACHE_SERVER_MAX_REQUEST_SIZE 32768
|
|
#define PISTACHE_SERVER_MAX_RESPONSE_SIZE 32768
|
|
|
|
static Pistache::Http::Endpoint *httpEndpoint;
|
|
#ifdef __linux__
|
|
static void sigHandler [[noreturn]] (int sig){
|
|
switch(sig){
|
|
case SIGINT:
|
|
case SIGQUIT:
|
|
case SIGTERM:
|
|
case SIGHUP:
|
|
default:
|
|
httpEndpoint->shutdown();
|
|
break;
|
|
}
|
|
exit(0);
|
|
}
|
|
|
|
static void setUpUnixSignals(std::vector<int> 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<int> 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<Pistache::Rest::Router>();
|
|
|
|
auto opts = Pistache::Http::Endpoint::options()
|
|
.threads(PISTACHE_SERVER_THREADS);
|
|
opts.flags(Pistache::Tcp::Options::ReuseAddr);
|
|
opts.maxRequestSize(PISTACHE_SERVER_MAX_REQUEST_SIZE);
|
|
opts.maxResponseSize(PISTACHE_SERVER_MAX_RESPONSE_SIZE);
|
|
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();
|
|
|
|
}
|