VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_httpd.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_httpd.h: builtin HTTP/RTSP server.
3
*****************************************************************************
4
* Copyright (C) 2004-2006 VLC authors and VideoLAN
5
* $Id: 6100dd00b2f1a1c957224c5d0af0791ace64551a $
6
*
7
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
8
*
9
* This program is free software; you can redistribute it and/or modify it
10
* under the terms of the GNU Lesser General Public License as published by
11
* the Free Software Foundation; either version 2.1 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public License
20
* along with this program; if not, write to the Free Software Foundation,
21
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22
*****************************************************************************/
23
24
#ifndef VLC_HTTPD_H
25
#define VLC_HTTPD_H 1
26
27
/**
28
* \file
29
* HTTP/RTSP server API.
30
*/
31
32
enum
33
{
34
HTTPD_MSG_NONE
,
35
36
/* answer */
37
HTTPD_MSG_ANSWER
,
38
39
/* http request */
40
HTTPD_MSG_GET
,
41
HTTPD_MSG_HEAD
,
42
HTTPD_MSG_POST
,
43
44
/* rtsp request */
45
HTTPD_MSG_OPTIONS
,
46
HTTPD_MSG_DESCRIBE
,
47
HTTPD_MSG_SETUP
,
48
HTTPD_MSG_PLAY
,
49
HTTPD_MSG_PAUSE
,
50
HTTPD_MSG_GETPARAMETER
,
51
HTTPD_MSG_TEARDOWN
,
52
53
/* just to track the count of MSG */
54
HTTPD_MSG_MAX
55
};
56
57
enum
58
{
59
HTTPD_PROTO_NONE
,
60
HTTPD_PROTO_HTTP
,
/* HTTP/1.x */
61
HTTPD_PROTO_RTSP
,
/* RTSP/1.x */
62
HTTPD_PROTO_HTTP0
,
/* HTTP/0.x */
63
};
64
65
typedef
struct
httpd_host_t
httpd_host_t
;
66
typedef
struct
httpd_client_t
httpd_client_t
;
67
/* create a new host */
68
VLC_API
httpd_host_t
*
vlc_http_HostNew
(
vlc_object_t
* )
VLC_USED
;
69
VLC_API
httpd_host_t
*
vlc_https_HostNew
(
vlc_object_t
* )
VLC_USED
;
70
VLC_API
httpd_host_t
*
vlc_rtsp_HostNew
(
vlc_object_t
* ) VLC_USED;
71
/* delete a host */
72
VLC_API
void
httpd_HostDelete
(
httpd_host_t
* );
73
74
typedef struct
httpd_message_t
75
{
76
httpd_client_t
*cl;
/* NULL if not throught a connection e vlc internal */
77
78
uint8_t
i_type
;
79
uint8_t
i_proto
;
80
uint8_t i_version;
81
82
/* for an answer */
83
int
i_status;
84
85
/* for a query */
86
char
*psz_url;
87
/* FIXME find a clean way to handle GET(psz_args)
88
and POST(body) through the same code */
89
uint8_t *psz_args;
90
91
/* options */
92
int
i_name;
93
char
**
name
;
94
int
i_value;
95
char
**value;
96
97
/* body */
98
int64_t i_body_offset;
99
int
i_body;
100
uint8_t *p_body;
101
102
}
httpd_message_t
;
103
104
typedef
struct
httpd_url_t
httpd_url_t
;
105
typedef
struct
httpd_callback_sys_t
httpd_callback_sys_t
;
106
typedef
int (*
httpd_callback_t
)(
httpd_callback_sys_t
*,
httpd_client_t
*,
httpd_message_t
*answer,
const
httpd_message_t
*
query
);
107
/* register a new url */
108
VLC_API
httpd_url_t
*
httpd_UrlNew
(
httpd_host_t
*,
const
char
*psz_url,
const
char
*psz_user,
const
char
*psz_password )
VLC_USED
;
109
/* register callback on a url */
110
VLC_API
int
httpd_UrlCatch
(
httpd_url_t
*,
int
i_msg,
httpd_callback_t
,
httpd_callback_sys_t
* );
111
/* delete a url */
112
VLC_API
void
httpd_UrlDelete
(
httpd_url_t
* );
113
114
VLC_API
char
*
httpd_ClientIP
(
const
httpd_client_t
*cl,
char
*,
int
* );
115
VLC_API
char
*
httpd_ServerIP
(
const
httpd_client_t
*cl,
char
*,
int
* );
116
117
/* High level */
118
119
typedef
struct
httpd_file_t
httpd_file_t
;
120
typedef
struct
httpd_file_sys_t
httpd_file_sys_t
;
121
typedef
int (*
httpd_file_callback_t
)(
httpd_file_sys_t
*,
httpd_file_t
*, uint8_t *psz_request, uint8_t **pp_data,
int
*pi_data );
122
VLC_API
httpd_file_t
*
httpd_FileNew
(
httpd_host_t
*,
const
char
*psz_url,
const
char
*
psz_mime
,
const
char
*psz_user,
const
char
*psz_password,
httpd_file_callback_t
pf_fill,
httpd_file_sys_t
* )
VLC_USED
;
123
VLC_API
httpd_file_sys_t
*
httpd_FileDelete
(
httpd_file_t
* );
124
125
126
typedef struct
httpd_handler_t
httpd_handler_t
;
127
typedef struct
httpd_handler_sys_t
httpd_handler_sys_t
;
128
typedef
int
(*
httpd_handler_callback_t
)( httpd_handler_sys_t *, httpd_handler_t *,
char
*psz_url, uint8_t *psz_request,
int
i_type
, uint8_t *p_in,
int
i_in,
char
*psz_remote_addr,
char
*psz_remote_host, uint8_t **pp_data,
int
*pi_data );
129
VLC_API
httpd_handler_t *
httpd_HandlerNew
(
httpd_host_t
*, const
char
*psz_url, const
char
*psz_user, const
char
*psz_password,
httpd_handler_callback_t
pf_fill, httpd_handler_sys_t * )
VLC_USED
;
130
VLC_API
httpd_handler_sys_t *
httpd_HandlerDelete
( httpd_handler_t * );
131
132
typedef struct
httpd_redirect_t
httpd_redirect_t
;
133
VLC_API
httpd_redirect_t *
httpd_RedirectNew
( httpd_host_t *, const
char
*psz_url_dst, const
char
*psz_url_src ) VLC_USED;
134
VLC_API
void
httpd_RedirectDelete
( httpd_redirect_t * );
135
136
137
typedef struct
httpd_stream_t
httpd_stream_t
;
138
VLC_API
httpd_stream_t *
httpd_StreamNew
( httpd_host_t *, const
char
*psz_url, const
char
*psz_mime, const
char
*psz_user, const
char
*psz_password ) VLC_USED;
139
VLC_API
void
httpd_StreamDelete
( httpd_stream_t * );
140
VLC_API
int
httpd_StreamHeader
( httpd_stream_t *, uint8_t *p_data,
int
i_data );
141
VLC_API
int
httpd_StreamSend
( httpd_stream_t *, uint8_t *p_data,
int
i_data );
142
143
144
/* Msg functions facilities */
145
VLC_API
void
httpd_MsgAdd
(
httpd_message_t
*, const
char
*
psz_name
, const
char
*
psz_value
, ... )
VLC_FORMAT
( 3, 4 );
146
/* return "" if not found. The string is not allocated */
147
VLC_API
const
char
*
httpd_MsgGet
( const httpd_message_t *, const
char
*psz_name );
148
149
#endif
/* _VLC_HTTPD_H */
Generated by
1.8.1.2