event-handler.md 1.33 KB
Newer Older
1
# Event handler function
2 3

Each connection has an event handler function associated with it. That function
4
must be implemented by the user. Event handler is the key element of the Mongoose
5
application, since it defines the application's behaviour. This is what an event
6 7 8 9 10 11 12 13 14 15 16 17 18
handler function looks like:

```c
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
19
  arrives on an inbound connection, `ev` would be `MG_EV_RECV`.
20
- `void *ev_data`: This pointer points to the event-specific data, and it has
21
  a different meaning for different events. For example, for an `MG_EV_RECV` event,
22
  `ev_data` is an `int *` pointer, pointing to the number of bytes received
23
  from the remote peer and saved into the receive IO buffer. The exact meaning of
24 25 26 27
  `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
28
application-specific data. Mongoose does not use that pointer. Event handler
29
can store any kind of information there.