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;
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
......@@ -36,6 +36,7 @@
# include <stdlib.h> /* realloc() */
#endif
#include "../libvlc.h"
#include <vlc_vout.h>
#include <vlc_aout.h>
#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";
......
......@@ -35,7 +35,7 @@
#include <vlc_network.h>
#include <vlc_tls.h>
#include <vlc_acl.h>
#include "httpd.h"
#include "../libvlc.h"
#include <string.h>
#include <errno.h>
......@@ -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;
......
/*****************************************************************************
* 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