SmolRTSP
0.1.3
A small, portable, extensible RTSP 1.0 implementation in C99
|
An RTSP requests controller. More...
#include <smolrtsp/context.h>
#include <smolrtsp/droppable.h>
#include <smolrtsp/types/request.h>
#include <smolrtsp/writer.h>
#include <stddef.h>
#include <interface99.h>
Go to the source code of this file.
Macros | |
#define | SmolRTSP_Controller_IFACE |
A controller that handles incoming RTSP requests. More... | |
#define | SmolRTSP_Controller_EXTENDS (SmolRTSP_Droppable) |
The superinterfaces of SmolRTSP_Controller_IFACE. | |
Enumerations | |
enum | SmolRTSP_ControlFlow { SmolRTSP_ControlFlow_Break , SmolRTSP_ControlFlow_Continue } |
Whether to stop or continue some processing. More... | |
Functions | |
interface99 (SmolRTSP_Controller) | |
Defines the SmolRTSP_Controller interface. More... | |
void | smolrtsp_dispatch (SmolRTSP_Writer conn, SmolRTSP_Controller controller, const SmolRTSP_Request *restrict req) |
Dispatches an incoming request to controller . More... | |
An RTSP requests controller.
#define SmolRTSP_Controller_IFACE |
A controller that handles incoming RTSP requests.
All RTSP command handlers accept the following parameters:
ctx
– a request context used to respond to your RTSP client.req
– a fully parsed request object. enum SmolRTSP_ControlFlow |
interface99 | ( | SmolRTSP_Controller | ) |
Defines the SmolRTSP_Controller
interface.
See Interface99 for the macro usage.
void smolrtsp_dispatch | ( | SmolRTSP_Writer | conn, |
SmolRTSP_Controller | controller, | ||
const SmolRTSP_Request *restrict | req | ||
) |
Dispatches an incoming request to controller
.
The algorithm is as follows:
before
method of controller
. Here you should do some preliminary stuff like logging a request or setting up initial response headers via smolrtsp_header. If before
returns SmolRTSP_ControlFlow_Break, jump to step #4.controller
. Here you should handle the request and respond to your client via smolrtsp_respond/smolrtsp_respond_ok or similar.after
method of controller
. Here you automatically receive the return value of smolrtsp_respond_*
(invoked during one of the previous steps). If it is <0, it means that something bad happened so that the handler has not been able to respond properly.[out] | conn | The writer to send RTSP responses. |
[in] | controller | The controller to handle the incoming request req . |
[in] | req | The fully parsed RTSP request object. |
conn.self && conn.vptr
controller.self && controller.vptr
req != NULL