home *** CD-ROM | disk | FTP | other *** search
/ mail.altrad.com / 2015.02.mail.altrad.com.tar / mail.altrad.com / TEST / vlc-2-0-5-win32.exe / sdk / include / vlc / plugins / vlc_httpd.h < prev    next >
C/C++ Source or Header  |  2012-12-12  |  5KB  |  140 lines

  1. /*****************************************************************************
  2.  * vlc_httpd.h: builtin HTTP/RTSP server.
  3.  *****************************************************************************
  4.  * Copyright (C) 2004-2006 VLC authors and VideoLAN
  5.  * $Id: a4c3a0f699137ee873d71ecdca961bc1240c861a $
  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.  * This file defines functions, structures, enums and macros for httpd functionality in vlc.
  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. struct httpd_message_t
  66. {
  67.     httpd_client_t *cl; /* NULL if not throught a connection e vlc internal */
  68.  
  69.     uint8_t i_type;
  70.     uint8_t i_proto;
  71.     uint8_t i_version;
  72.  
  73.     /* for an answer */
  74.     int     i_status;
  75.  
  76.     /* for a query */
  77.     char    *psz_url;
  78.     /* FIXME find a clean way to handle GET(psz_args)
  79.        and POST(body) through the same code */
  80.     uint8_t *psz_args;
  81.  
  82.     /* options */
  83.     int     i_name;
  84.     char    **name;
  85.     int     i_value;
  86.     char    **value;
  87.  
  88.     /* body */
  89.     int64_t i_body_offset;
  90.     int     i_body;
  91.     uint8_t *p_body;
  92.  
  93. };
  94.  
  95. /* create a new host */
  96. VLC_API httpd_host_t *vlc_http_HostNew( vlc_object_t * ) VLC_USED;
  97. VLC_API httpd_host_t *vlc_https_HostNew( vlc_object_t * ) VLC_USED;
  98. VLC_API httpd_host_t *vlc_rtsp_HostNew( vlc_object_t * ) VLC_USED;
  99.  
  100. /* delete a host */
  101. VLC_API void httpd_HostDelete( httpd_host_t * );
  102.  
  103. /* register a new url */
  104. VLC_API httpd_url_t * httpd_UrlNew( httpd_host_t *, const char *psz_url, const char *psz_user, const char *psz_password, const vlc_acl_t *p_acl ) VLC_USED;
  105. VLC_API httpd_url_t * httpd_UrlNewUnique( httpd_host_t *, const char *psz_url, const char *psz_user, const char *psz_password, const vlc_acl_t *p_acl ) VLC_USED;
  106. /* register callback on a url */
  107. VLC_API int httpd_UrlCatch( httpd_url_t *, int i_msg, httpd_callback_t, httpd_callback_sys_t * );
  108. /* delete a url */
  109. VLC_API void httpd_UrlDelete( httpd_url_t * );
  110.  
  111. VLC_API char* httpd_ClientIP( const httpd_client_t *cl, char *, int * );
  112. VLC_API char* httpd_ServerIP( const httpd_client_t *cl, char *, int * );
  113.  
  114. /* High level */
  115.  
  116. 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, const vlc_acl_t *p_acl, httpd_file_callback_t pf_fill, httpd_file_sys_t * ) VLC_USED;
  117. VLC_API httpd_file_sys_t * httpd_FileDelete( httpd_file_t * );
  118.  
  119.  
  120. VLC_API httpd_handler_t * httpd_HandlerNew( httpd_host_t *, const char *psz_url, const char *psz_user, const char *psz_password, const vlc_acl_t *p_acl, httpd_handler_callback_t pf_fill, httpd_handler_sys_t * ) VLC_USED;
  121. VLC_API httpd_handler_sys_t * httpd_HandlerDelete( httpd_handler_t * );
  122.  
  123.  
  124. VLC_API httpd_redirect_t * httpd_RedirectNew( httpd_host_t *, const char *psz_url_dst, const char *psz_url_src ) VLC_USED;
  125. VLC_API void httpd_RedirectDelete( httpd_redirect_t * );
  126.  
  127.  
  128. 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, const vlc_acl_t *p_acl ) VLC_USED;
  129. VLC_API void httpd_StreamDelete( httpd_stream_t * );
  130. VLC_API int httpd_StreamHeader( httpd_stream_t *, uint8_t *p_data, int i_data );
  131. VLC_API int httpd_StreamSend( httpd_stream_t *, uint8_t *p_data, int i_data );
  132.  
  133.  
  134. /* Msg functions facilities */
  135. VLC_API void httpd_MsgAdd( httpd_message_t *, const char *psz_name, const char *psz_value, ... ) VLC_FORMAT( 3, 4 );
  136. /* return "" if not found. The string is not allocated */
  137. VLC_API const char * httpd_MsgGet( const httpd_message_t *, const char *psz_name );
  138.  
  139. #endif /* _VLC_HTTPD_H */
  140.