mongoose/docs/design-concept/event-handler.md
Dmitry Frank 23122b327c Remove old docs, rename docs_new to docs
It would be probably good idea to also remove tools/docgen.py and
asciidoc.mk, but asciidoc.mk is still mentioned under `cloud/doc`, which
may contain some useful info which we'll need at least to review before
removing.

PUBLISHED_FROM=faf454d4c52a2f07ea8ac084cf0bd11a0c9c9b3b
2016-05-15 22:07:04 +03:00

1.3 KiB

title
Event handler function

Each connection has an event handler function associated with it. That function must be implemented by user. Event handler is the key element of the Mongoose application, since it defines application's behavior. This is how an event handler function looks like:

static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
  switch (ev) {
    /* Event handler code that defines behavior of the connection */
    ...
  }
}
  • struct mg_connection *nc: Connection that has received an event.
  • int ev: Event number, defined in mongoose.h. For example, when data arrives on inbound connection ev would be MG_EV_RECV.
  • void *ev_data: This pointer points to the event-specific data, and it has different meaning for different events. For example, for MG_EV_RECV event, ev_data is an int * pointer, pointing to the number of bytes received from the remote peer and saved into the receive IO buffer. Exact meaning of ev_data is described for each event. Protocol-specific events usually have ev_data pointing to structures that hold protocol-specific information.

NOTE: struct mg_connection has void *user_data which is a placeholder for an application-specific data. Mongoose does not use that pointer. Event handler can store any kind of information there.