mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-22 05:25:48 +00:00
64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
#include "../../uwsgi.h"
|
|
|
|
extern struct uwsgi_server uwsgi;
|
|
|
|
class FakeClass {
|
|
|
|
public:
|
|
char *foobar;
|
|
uint16_t foobar_len;
|
|
void hello_world(struct wsgi_request *);
|
|
|
|
};
|
|
|
|
void FakeClass::hello_world(struct wsgi_request *wsgi_req) {
|
|
|
|
wsgi_req->response_size += wsgi_req->socket->proto_write(wsgi_req, (char *) "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n", 44);
|
|
wsgi_req->response_size += wsgi_req->socket->proto_write(wsgi_req, foobar, foobar_len);
|
|
}
|
|
|
|
extern "C" int uwsgi_cplusplus_init(){
|
|
uwsgi_log("Initializing example c++ plugin\n");
|
|
return 0;
|
|
}
|
|
|
|
extern "C" int uwsgi_cplusplus_request(struct wsgi_request *wsgi_req) {
|
|
|
|
FakeClass *fc;
|
|
|
|
// empty request ?
|
|
if (!wsgi_req->uh.pktsize) {
|
|
uwsgi_log( "Invalid request. skip.\n");
|
|
goto clear;
|
|
}
|
|
|
|
// get uwsgi variables
|
|
if (uwsgi_parse_vars(wsgi_req)) {
|
|
uwsgi_log("Invalid request. skip.\n");
|
|
goto clear;
|
|
}
|
|
|
|
fc = new FakeClass();
|
|
// get PATH_INFO
|
|
fc->foobar = uwsgi_get_var(wsgi_req, (char *) "PATH_INFO", 9, &fc->foobar_len);
|
|
|
|
if (fc->foobar) {
|
|
// send output
|
|
fc->hello_world(wsgi_req);
|
|
}
|
|
|
|
delete fc;
|
|
|
|
clear:
|
|
return UWSGI_OK;
|
|
}
|
|
|
|
|
|
extern "C" void uwsgi_cplusplus_after_request(struct wsgi_request *wsgi_req) {
|
|
uwsgi_log("logging c++ request\n");
|
|
}
|
|
|
|
|
|
|
|
|