mongoose/docs/design-concept/event-handler.md
Dmitry Frank 7bed7ff482 Docs are generated for Mongoose
Comments in headers are changed a bit: removed adoc-specific stuff,
markdown is used instead

PUBLISHED_FROM=9242cce85cc52a47a197d377e7e23804721a6bb5
2016-03-21 13:29:29 +01:00

32 lines
1.3 KiB
Markdown

---
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:
```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
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.