Commit 2c83a50a authored by Marko Mikulicic's avatar Marko Mikulicic Committed by Cesanta Bot

Document %.*Q

PUBLISHED_FROM=5dc567f8978d5414835f7a2338a78ae9eb683f55
parent 1c80fc28
...@@ -8,7 +8,7 @@ items: ...@@ -8,7 +8,7 @@ items:
--- ---
Mongoose is a multi-protocol networking library that implements non-blocking, Mongoose is a multi-protocol networking library that implements non-blocking,
asyncronous IO and provides event-based API. It has three basic data asyncronous IO and provides event-based APIs. It has three basic data
structures: structures:
- `struct mg_mgr` is an event manager that holds all active connections - `struct mg_mgr` is an event manager that holds all active connections
...@@ -16,14 +16,14 @@ structures: ...@@ -16,14 +16,14 @@ structures:
- `struct mbuf` describes data buffer (received or sent data) - `struct mbuf` describes data buffer (received or sent data)
Connections could be either *listening*, *outbound* or *inbound*. Outbound Connections could be either *listening*, *outbound* or *inbound*. Outbound
connections are created by `mg_connect()` call. Listening connections are connections are created by the `mg_connect()` call. Listening connections are
created by `mg_bind()` call. Inbound connections are those accepted by a created by the `mg_bind()` call. Inbound connections are those accepted by a
listening connection. Each connection is described by `struct mg_connection` listening connection. Each connection is described by the `struct mg_connection`
structure, which has a number of fields like socket, event handler function, structure, which has a number of fields like socket, event handler function,
send/receive buffer, flags, et cetera. send/receive buffer, flags, etc.
Mongoose usage pattern is to declare and initialize event manager, create Mongoose's usage pattern is to declare and initialise event manager, create
connections and create an event loop by calling `mg_mgr_poll()` in a loop. connections and create an event loop by calling `mg_mgr_poll()` in a loop.
`mg_mgr_poll()` iterates over all sockets, accepts new connections, sends and `mg_mgr_poll()` iterates over all sockets, accepts new connections, sends and
receives data, closes connections, and calls event handler functions for the receives data, closes connections and calls event handler functions for the
respective events. respective events.
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
title: Memory buffers title: Memory buffers
--- ---
Each connection has send and receive buffer, `struct mg_connection::send_mbuf` Each connection has a send and receive buffer, `struct mg_connection::send_mbuf`
and `struct mg_connection::recv_mbuf` respectively. When data arrives, and `struct mg_connection::recv_mbuf` respectively. When data arrives,
Mongoose appends received data to the `recv_mbuf` and triggers `MG_EV_RECV` Mongoose appends received data to the `recv_mbuf` and triggers an `MG_EV_RECV`
event. User may send data back by calling one of the output functions, like event. The user may send data back by calling one of the output functions, like
`mg_send()` or `mg_printf()`. Output functions append data to the `send_mbuf`. `mg_send()` or `mg_printf()`. Output functions append data to the `send_mbuf`.
When Mongoose successfully writes data to the socket, it discards data from When Mongoose successfully writes data to the socket, it discards data from
`struct mg_connection::send_mbuf` and sends `MG_EV_SEND` event. When connection `struct mg_connection::send_mbuf` and sends an `MG_EV_SEND` event. When the connection
is closed, `MG_EV_CLOSE` event is sent. is closed, an `MG_EV_CLOSE` event is sent.
![](media/mbuf.png) ![](media/mbuf.png)
...@@ -3,16 +3,16 @@ title: Overview ...@@ -3,16 +3,16 @@ title: Overview
--- ---
Mongoose is a swiss army knife for embedded network programming. Mongoose is a swiss army knife for embedded network programming.
It implements event-driven non-blocking API for TCP, UDP, HTTP, It implements event-driven non-blocking APIs for TCP, UDP, HTTP,
WebSocket, CoAP, MQTT for both client and server mode. WebSocket, CoAP, MQTT for client and server mode.
Features include: Features include:
- Cross-platform: works on Linux/UNIX, MacOS, QNX, eCos, Windows, Android, - Cross-platform: works on Linux/UNIX, MacOS, QNX, eCos, Windows, Android,
iPhone, FreeRTOS (TI CC3200, ESP8266), etc iPhone, FreeRTOS (TI CC3200, ESP8266) and more
- Single-threaded, asynchronous, non-blocking core with simple event-based API - Single-threaded, asynchronous, non-blocking core with simple event-based API
- Native support for [PicoTCP embedded TCP/IP stack](http://www.picotcp.com), - Native support for [PicoTCP embedded TCP/IP stack](http://www.picotcp.com),
[LWIP embedded TCP/IP stack](https://en.wikipedia.org/wiki/LwIP) [LWIP embedded TCP/IP stack](https://en.wikipedia.org/wiki/LwIP)
- Builtin protocols: - Built-in protocols:
- plain TCP, plain UDP, SSL/TLS (over TCP, one-way or two-way) - plain TCP, plain UDP, SSL/TLS (over TCP, one-way or two-way)
- HTTP client and server - HTTP client and server
- WebSocket client and server - WebSocket client and server
......
...@@ -3,7 +3,7 @@ title: Usage Example ...@@ -3,7 +3,7 @@ title: Usage Example
--- ---
- Copy `mongoose.c` and `mongoose.h` to your build tree - Copy `mongoose.c` and `mongoose.h` to your build tree
- Write code that uses Mongoose API, e.g. in `my_app.c` - Write code that uses the Mongoose API, e.g. in `my_app.c`
- Compile application: `$ cc my_app.c mongoose.c` - Compile application: `$ cc my_app.c mongoose.c`
```c ```c
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment