Hi Jared, the code looks fine to me.
What do you mean 'unable to call'? Are you getting a compiler error? Or a crash at runtime? Cheers, /ulrich On Thu, Jul 10, 2014 at 1:20 PM, Jared <[email protected]> wrote: > Hi, > > I'm new to mongoose. I edited hello.c and added a Web class into it and > moved some original code around. I was able to build and execute it like > its original behavior. However, when I added a member function and called > in from begin_request_handler, the new function could not be called. Can > you please help me? Thanks! > > Web::get_Instance()->callback(); // unable to call this function > > > ================= hello.cpp ==================== > #include <stdio.h> > #include <string.h> > #include "mongoose.h" > > class Web > { > private: > Web(); > ~Web() {}; > static Web* m_instance; > public: > void callback (void); > static Web* get_Instance(); > }; > Web* Web::m_instance = 0; > > void Web::callback (void) > { > printf ("%s\n", __FUNCTION__); > } > > // This function will be called by mongoose on every new request. > static int begin_request_handler(struct mg_connection *conn) > { > Web::get_Instance()->callback(); // unable to call this function > > const struct mg_request_info *request_info = mg_get_request_info(conn); > char content[100]; > > // Prepare the message we're going to send > int content_length = snprintf(content, sizeof(content), > "Hello from mongoose! Remote port: %d", > request_info->remote_port); > > // Send HTTP reply to the client > mg_printf(conn, > "HTTP/1.1 200 OK\r\n" > "Content-Type: text/plain\r\n" > "Content-Length: %d\r\n" // Always set Content-Length > "\r\n" > "%s", > content_length, content); > > // Returning non-zero tells mongoose that our function has replied to > // the client, and mongoose should not send client any more data. > return 1; > } > > Web::Web() > { > struct mg_context *ctx; > struct mg_callbacks callbacks; > > // List of options. Last element must be NULL. > const char *options[] = {"listening_ports", "8080", NULL}; > > // Prepare callbacks structure. We have only one callback, the rest are > NULL. > memset(&callbacks, 0, sizeof(callbacks)); > callbacks.begin_request = begin_request_handler; > > // Start the web server. > ctx = mg_start(&callbacks, NULL, options); > > // Wait until user hits "enter". Server is running in separate thread. > // Navigating to http://localhost:8080 will invoke > begin_request_handler(). > getchar(); > > // Stop the server. > mg_stop(ctx); > } > > Web* Web::get_Instance() > { > if (!m_instance) > m_instance = new Web; > > return m_instance; > } > > int main(void) > { > Web::get_Instance(); > > return 0; > } > > -- > You received this message because you are subscribed to the Google Groups > "mongoose-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/mongoose-users. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "mongoose-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/mongoose-users. For more options, visit https://groups.google.com/d/optout.
