Commit 2fac2b1d authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Hide httpd_t and httpd_host_t within httpd.c

parent 17853c53
...@@ -32,4 +32,8 @@ extern const size_t libvlc_config_count; ...@@ -32,4 +32,8 @@ extern const size_t libvlc_config_count;
extern const struct hotkey libvlc_hotkeys[]; extern const struct hotkey libvlc_hotkeys[];
extern const size_t libvlc_hotkeys_size; extern const size_t libvlc_hotkeys_size;
extern vlc_object_t *
vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type,
const char *psz_type);
#endif #endif
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
# include <stdlib.h> /* realloc() */ # include <stdlib.h> /* realloc() */
#endif #endif
#include "../libvlc.h"
#include <vlc_vout.h> #include <vlc_vout.h>
#include <vlc_aout.h> #include <vlc_aout.h>
#include "audio_output/aout_internal.h" #include "audio_output/aout_internal.h"
...@@ -53,7 +54,6 @@ ...@@ -53,7 +54,6 @@
#include "vlc_filter.h" #include "vlc_filter.h"
#include "vlc_httpd.h" #include "vlc_httpd.h"
#include "../network/httpd.h"
#include "vlc_vlm.h" #include "vlc_vlm.h"
#include "vlc_vod.h" #include "vlc_vod.h"
#include "vlc_tls.h" #include "vlc_tls.h"
...@@ -87,7 +87,7 @@ static void ListChildren ( vlc_list_t *, vlc_object_t *, int ); ...@@ -87,7 +87,7 @@ static void ListChildren ( vlc_list_t *, vlc_object_t *, int );
*****************************************************************************/ *****************************************************************************/
static vlc_mutex_t structure_lock; static vlc_mutex_t structure_lock;
static vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size, vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
int i_type, const char *psz_type ) int i_type, const char *psz_type )
{ {
vlc_object_t * p_new; vlc_object_t * p_new;
...@@ -285,14 +285,6 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type ) ...@@ -285,14 +285,6 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
i_size = sizeof(sout_instance_t); i_size = sizeof(sout_instance_t);
psz_type = "stream output"; psz_type = "stream output";
break; break;
case VLC_OBJECT_HTTPD:
i_size = sizeof( httpd_t );
psz_type = "http server";
break;
case VLC_OBJECT_HTTPD_HOST:
i_size = sizeof( httpd_host_t );
psz_type = "http server";
break;
case VLC_OBJECT_VLM: case VLC_OBJECT_VLM:
i_size = sizeof( vlm_t ); i_size = sizeof( vlm_t );
psz_type = "vlm dameon"; psz_type = "vlm dameon";
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <vlc_network.h> #include <vlc_network.h>
#include <vlc_tls.h> #include <vlc_tls.h>
#include <vlc_acl.h> #include <vlc_acl.h>
#include "httpd.h" #include "../libvlc.h"
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
...@@ -65,6 +65,51 @@ ...@@ -65,6 +65,51 @@
static void httpd_ClientClean( httpd_client_t *cl ); static void httpd_ClientClean( httpd_client_t *cl );
struct httpd_t
{
VLC_COMMON_MEMBERS
int i_host;
httpd_host_t **host;
};
/* each host run in his own thread */
struct httpd_host_t
{
VLC_COMMON_MEMBERS
httpd_t *httpd;
/* ref count */
int i_ref;
/* address/port and socket for listening at connections */
char *psz_hostname;
int i_port;
int *fd;
/* Statistics */
counter_t *p_active_counter;
counter_t *p_total_counter;
vlc_mutex_t lock;
/* all registered url (becarefull that 2 httpd_url_t could point at the same url)
* This will slow down the url research but make my live easier
* All url will have their cb trigger, but only the first one can answer
* */
int i_url;
httpd_url_t **url;
int i_client;
httpd_client_t **client;
/* TLS data */
tls_server_t *p_tls;
};
struct httpd_url_t struct httpd_url_t
{ {
httpd_host_t *host; httpd_host_t *host;
...@@ -981,6 +1026,8 @@ httpd_host_t *httpd_HostNew( vlc_object_t *p_this, const char *psz_host, ...@@ -981,6 +1026,8 @@ httpd_host_t *httpd_HostNew( vlc_object_t *p_this, const char *psz_host,
); );
} }
static const char psz_object_type[] = "http server";
httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname, httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname,
int i_port, int i_port,
const char *psz_cert, const char *psz_key, const char *psz_cert, const char *psz_key,
...@@ -1011,7 +1058,10 @@ httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname, ...@@ -1011,7 +1058,10 @@ httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname,
if( !(httpd = vlc_object_find( p_this, VLC_OBJECT_HTTPD, FIND_ANYWHERE )) ) if( !(httpd = vlc_object_find( p_this, VLC_OBJECT_HTTPD, FIND_ANYWHERE )) )
{ {
msg_Info( p_this, "creating httpd" ); msg_Info( p_this, "creating httpd" );
if( ( httpd = vlc_object_create( p_this, VLC_OBJECT_HTTPD ) ) == NULL ) httpd = (httpd_t *)vlc_custom_create( p_this, sizeof (*httpd),
VLC_OBJECT_HTTPD,
psz_object_type );
if (httpd == NULL)
{ {
vlc_mutex_unlock( lockval.p_address ); vlc_mutex_unlock( lockval.p_address );
free( psz_host ); free( psz_host );
...@@ -1071,7 +1121,12 @@ httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname, ...@@ -1071,7 +1121,12 @@ httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname,
p_tls = NULL; p_tls = NULL;
/* create the new host */ /* create the new host */
host = vlc_object_create( p_this, VLC_OBJECT_HTTPD_HOST ); host = (httpd_host_t *)vlc_custom_create( p_this, sizeof (*host),
VLC_OBJECT_HTTPD_HOST,
psz_object_type );
if (host == NULL)
goto error;
host->httpd = httpd; host->httpd = httpd;
vlc_mutex_init( httpd, &host->lock ); vlc_mutex_init( httpd, &host->lock );
host->i_ref = 1; host->i_ref = 1;
......
/*****************************************************************************
* httpd.h: builtin HTTP/RTSP server internals.
*****************************************************************************
* Copyright (C) 2004-2006 the VideoLAN team
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef _LIBVLC_HTTPD_H
#define _LIBVLC_HTTPD_H 1
struct httpd_t
{
VLC_COMMON_MEMBERS
int i_host;
httpd_host_t **host;
};
/* each host run in his own thread */
struct httpd_host_t
{
VLC_COMMON_MEMBERS
httpd_t *httpd;
/* ref count */
int i_ref;
/* address/port and socket for listening at connections */
char *psz_hostname;
int i_port;
int *fd;
/* Statistics */
counter_t *p_active_counter;
counter_t *p_total_counter;
vlc_mutex_t lock;
/* all registered url (becarefull that 2 httpd_url_t could point at the same url)
* This will slow down the url research but make my live easier
* All url will have their cb trigger, but only the first one can answer
* */
int i_url;
httpd_url_t **url;
int i_client;
httpd_client_t **client;
/* TLS data */
tls_server_t *p_tls;
};
#endif /* _LIBVLC_HTTPD_H */
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