From c471b9bdc9b19dc8fc3ada4ab3186d95b7215593 Mon Sep 17 00:00:00 2001 From: bel Date: Fri, 10 Jan 2014 22:22:26 +0100 Subject: [PATCH] C++ embedding example should do the same as the C embedding example --- examples/embedded_c/embedded_c.c | 4 ++-- examples/embedded_cpp/embedded_cpp.cpp | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/examples/embedded_c/embedded_c.c b/examples/embedded_c/embedded_c.c index 30697408..5fbdd65b 100644 --- a/examples/embedded_c/embedded_c.c +++ b/examples/embedded_c/embedded_c.c @@ -25,7 +25,7 @@ int ExampleHandler(struct mg_connection *conn, void *cbdata) { mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"); mg_printf(conn, ""); - mg_printf(conn, "

This is example text!!!

"); + mg_printf(conn, "

This is an example text from a C handler

"); mg_printf(conn, "

To see a page from the A handler click here

"); mg_printf(conn, "

To see a page from the A/B handler click here

"); mg_printf(conn, "

To see a page from the *.foo handler click here

"); @@ -92,7 +92,7 @@ int main(int argc, char *argv[]) mg_set_request_handler(ctx,EXIT_URI, ExitHandler,0); mg_set_request_handler(ctx,"/a", AHandler,0); mg_set_request_handler(ctx,"/a/b", ABHandler,0); - mg_set_request_handler( ctx, "**.foo$", FooHandler,0); + mg_set_request_handler(ctx,"**.foo$", FooHandler,0); printf("Browse files at http://localhost:%s/\n", PORT); printf("Run example at http://localhost:%s%s\n", PORT, EXAMPLE_URI); diff --git a/examples/embedded_cpp/embedded_cpp.cpp b/examples/embedded_cpp/embedded_cpp.cpp index 24552e0c..42b3d011 100644 --- a/examples/embedded_cpp/embedded_cpp.cpp +++ b/examples/embedded_cpp/embedded_cpp.cpp @@ -23,7 +23,10 @@ public: bool handleGet(CivetServer *server, struct mg_connection *conn) { mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"); mg_printf(conn, ""); - mg_printf(conn, "

This is example text!!!

"); + mg_printf(conn, "

This is an example text from a C++ handler

"); + mg_printf(conn, "

To see a page from the A handler click here

"); + mg_printf(conn, "

To see a page from the A/B handler click here

"); + mg_printf(conn, "

To see a page from the *.foo handler click here

"); mg_printf(conn, "

To exit click here

", EXIT_URI); mg_printf(conn, "\n"); @@ -66,6 +69,24 @@ public: } }; +class FooHandler: public CivetHandler +{ +public: + bool handleGet(CivetServer *server, struct mg_connection *conn) { + /* Handler may access the request info using mg_get_request_info */ + struct mg_request_info * req_info = mg_get_request_info(conn); + + mg_printf(conn, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"); + mg_printf(conn, ""); + mg_printf(conn, "

This is the Foo handler!!!

"); + mg_printf(conn, "

The request was:

%s %s HTTP/%s

", + req_info->request_method, req_info->uri, req_info->http_version); + mg_printf(conn, "\n"); + return true; + } +}; + + int main(int argc, char *argv[]) { @@ -79,6 +100,7 @@ int main(int argc, char *argv[]) server.addHandler(EXIT_URI, new ExitHandler()); server.addHandler("/a", new AHandler()); server.addHandler("/a/b", new ABHandler()); + server.addHandler("**.foo$", new FooHandler()); printf("Browse files at http://localhost:%s/\n", PORT); printf("Run example at http://localhost:%s%s\n", PORT, EXAMPLE_URI);