From: RĂ©mi Denis-Courmont Date: Fri, 1 Dec 2006 20:26:05 +0000 (+0000) Subject: Hide httpd_t and httpd_host_t within httpd.c X-Git-Tag: 0.9.0-test0~9139 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2fac2b1d070cdb9dd9f6ba5fa4977c148cf12600;p=vlc Hide httpd_t and httpd_host_t within httpd.c --- diff --git a/src/libvlc.h b/src/libvlc.h index 442d9f378e..02772d4ad4 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -32,4 +32,8 @@ extern const size_t libvlc_config_count; extern const struct hotkey libvlc_hotkeys[]; 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 diff --git a/src/misc/objects.c b/src/misc/objects.c index bfdd5c5956..73b599af1e 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -36,6 +36,7 @@ # include /* realloc() */ #endif +#include "../libvlc.h" #include #include #include "audio_output/aout_internal.h" @@ -53,7 +54,6 @@ #include "vlc_filter.h" #include "vlc_httpd.h" -#include "../network/httpd.h" #include "vlc_vlm.h" #include "vlc_vod.h" #include "vlc_tls.h" @@ -87,7 +87,7 @@ static void ListChildren ( vlc_list_t *, vlc_object_t *, int ); *****************************************************************************/ 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 ) { vlc_object_t * p_new; @@ -285,14 +285,6 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type ) i_size = sizeof(sout_instance_t); psz_type = "stream output"; 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: i_size = sizeof( vlm_t ); psz_type = "vlm dameon"; diff --git a/src/network/httpd.c b/src/network/httpd.c index 93521835a2..e636277e65 100644 --- a/src/network/httpd.c +++ b/src/network/httpd.c @@ -35,7 +35,7 @@ #include #include #include -#include "httpd.h" +#include "../libvlc.h" #include #include @@ -65,6 +65,51 @@ 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 { httpd_host_t *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, int i_port, 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, if( !(httpd = vlc_object_find( p_this, VLC_OBJECT_HTTPD, FIND_ANYWHERE )) ) { 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 ); free( psz_host ); @@ -1071,7 +1121,12 @@ httpd_host_t *httpd_TLSHostNew( vlc_object_t *p_this, const char *psz_hostname, p_tls = NULL; /* 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; vlc_mutex_init( httpd, &host->lock ); host->i_ref = 1; diff --git a/src/network/httpd.h b/src/network/httpd.h deleted file mode 100644 index e83c17d5b3..0000000000 --- a/src/network/httpd.h +++ /dev/null @@ -1,70 +0,0 @@ -/***************************************************************************** - * httpd.h: builtin HTTP/RTSP server internals. - ***************************************************************************** - * Copyright (C) 2004-2006 the VideoLAN team - * $Id$ - * - * Authors: Laurent Aimar - * - * 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 */