1 /***************************************************************************** 2 * vlm_internal.h: Internal vlm structures 3 ***************************************************************************** 4 * Copyright (C) 1998-2006 VLC authors and VideoLAN 5 * $Id: 8c2a25b0b06255d7e746cd1ade47ae819921ca2c $ 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 LIBVLC_VLM_INTERNAL_H 25 #define LIBVLC_VLM_INTERNAL_H 1 26 27 #include <vlc_vlm.h> 28 #include "input_interface.h" 29 30 /* Private */ 31 typedef struct 32 { 33 /* instance name */ 34 char *psz_name; 35 36 /* "playlist" index */ 37 int i_index; 38 39 bool b_sout_keep; 40 41 vlc_object_t *p_parent; 42 input_item_t *p_item; 43 input_thread_t *p_input; 44 input_resource_t *p_input_resource; 45 46 } vlm_media_instance_sys_t; 47 48 49 typedef struct 50 { 51 vlm_media_t cfg; 52 53 struct 54 { 55 input_item_t *p_item; 56 vod_media_t *p_media; 57 } vod; 58 59 /* actual input instances */ 60 int i_instance; 61 vlm_media_instance_sys_t **instance; 62 } vlm_media_sys_t; 63 64 typedef struct 65 { 66 /* names "schedule" is reserved */ 67 char *psz_name; 68 bool b_enabled; 69 /* list of commands to execute on date */ 70 int i_command; 71 char **command; 72 73 /* the date of 1st execution */ 74 time_t date; 75 76 /* if != 0, repeat period in seconds */ 77 unsigned period; 78 /* number of times you have to repeat 79 i_repeat < 0 : endless repeat */ 80 int i_repeat; 81 } vlm_schedule_sys_t; 82 83 84 struct vlm_t 85 { 86 VLC_COMMON_MEMBERS 87 88 vlc_mutex_t lock; 89 90 /* a separate mutex is needed: "lock" must remain locked while waiting */ 91 vlc_mutex_t lock_delete; 92 vlc_cond_t wait_delete; 93 94 vlc_thread_t thread; 95 vlc_mutex_t lock_manage; 96 vlc_cond_t wait_manage; 97 unsigned users; 98 99 /* tell vlm thread there is work to do */ 100 bool input_state_changed; 101 /* */ 102 int64_t i_id; 103 104 /* Vod server (used by media) */ 105 vod_t *p_vod; 106 107 /* Media list */ 108 int i_media; 109 vlm_media_sys_t **media; 110 111 /* Schedule list */ 112 int i_schedule; 113 vlm_schedule_sys_t **schedule; 114 115 unsigned i_consecutive_errors; 116 }; 117 118 int vlm_ControlInternal( vlm_t *p_vlm, int i_query, ... ); 119 int ExecuteCommand( vlm_t *, const char *, vlm_message_t ** ); 120 void vlm_ScheduleDelete( vlm_t *vlm, vlm_schedule_sys_t *sched ); 121 122 #endif 123