home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / vlc-1.1.2-win32.exe / sdk / include / vlc / plugins / vlc_services_discovery.h < prev    next >
Encoding:
C/C++ Source or Header  |  2010-07-30  |  4.1 KB  |  123 lines

  1. /*****************************************************************************
  2.  * vlc_services_discovery.h : Services Discover functions
  3.  *****************************************************************************
  4.  * Copyright (C) 1999-2004 the VideoLAN team
  5.  * $Id: 956b77b65f943f9660858ebc07d51a9e27daea36 $
  6.  *
  7.  * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 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 General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23.  
  24. #ifndef VLC_SERVICES_DISCOVERY_H_
  25. #define VLC_SERVICES_DISCOVERY_H_
  26.  
  27. #include <vlc_input.h>
  28. #include <vlc_events.h>
  29. #include <vlc_probe.h>
  30.  
  31. /**
  32.  * \file
  33.  * This file functions and structures for service discovery in vlc
  34.  */
  35.  
  36. # ifdef __cplusplus
  37. extern "C" {
  38. # endif
  39.  
  40. /*
  41.  * @{
  42.  */
  43.  
  44. struct services_discovery_t
  45. {
  46.     VLC_COMMON_MEMBERS
  47.     module_t *          p_module;
  48.  
  49.     vlc_event_manager_t event_manager;      /* Accessed through Setters for non class function */
  50.  
  51.     char *psz_name;
  52.     config_chain_t *p_cfg;
  53.  
  54.     services_discovery_sys_t *p_sys;
  55. };
  56.  
  57. enum services_discovery_category_e
  58. {
  59.     SD_CAT_DEVICES = 1,
  60.     SD_CAT_LAN,
  61.     SD_CAT_INTERNET,
  62.     SD_CAT_MYCOMPUTER
  63. };
  64.  
  65. /***********************************************************************
  66.  * Service Discovery
  67.  ***********************************************************************/
  68.  
  69. /* Get the services discovery modules names to use in Create(), in a null
  70.  * terminated string array. Array and string must be freed after use. */
  71. VLC_EXPORT( char **, vlc_sd_GetNames, ( vlc_object_t *, char ***, int ** ) );
  72. #define vlc_sd_GetNames(obj, pln, pcat ) \
  73.         vlc_sd_GetNames(VLC_OBJECT(obj), pln, pcat)
  74.  
  75. /* Creation of a service_discovery object */
  76. VLC_EXPORT( services_discovery_t *, vlc_sd_Create, ( vlc_object_t *, const char * ) );
  77. VLC_EXPORT( bool, vlc_sd_Start, ( services_discovery_t * ) );
  78. VLC_EXPORT( void, vlc_sd_Stop, ( services_discovery_t * ) );
  79. VLC_EXPORT( void, vlc_sd_Destroy, ( services_discovery_t * ) );
  80.  
  81. static inline void vlc_sd_StopAndDestroy( services_discovery_t * p_this )
  82. {
  83.     vlc_sd_Stop( p_this );
  84.     vlc_sd_Destroy( p_this );
  85. }
  86.  
  87. /* Read info from discovery object */
  88. VLC_EXPORT( char *,                 services_discovery_GetLocalizedName, ( services_discovery_t * p_this ) );
  89.  
  90. /* Receive event notification (preferred way to get new items) */
  91. VLC_EXPORT( vlc_event_manager_t *,  services_discovery_EventManager, ( services_discovery_t * p_this ) );
  92.  
  93. /* Used by services_discovery to post update about their items */
  94.     /* About the psz_category, it is a legacy way to add info to the item,
  95.      * for more options, directly set the (meta) data on the input item */
  96. VLC_EXPORT( void,                   services_discovery_AddItem, ( services_discovery_t * p_this, input_item_t * p_item, const char * psz_category ) );
  97. VLC_EXPORT( void,                   services_discovery_RemoveItem, ( services_discovery_t * p_this, input_item_t * p_item ) );
  98.  
  99.  
  100. /* SD probing */
  101.  
  102. VLC_EXPORT(int, vlc_sd_probe_Add, (vlc_probe_t *, const char *, const char *, int category));
  103.  
  104. #define VLC_SD_PROBE_SUBMODULE \
  105.     add_submodule() \
  106.         set_capability( "services probe", 100 ) \
  107.         set_callbacks( vlc_sd_probe_Open, NULL )
  108.  
  109. #define VLC_SD_PROBE_HELPER(name, longname, cat) \
  110. static int vlc_sd_probe_Open (vlc_object_t *obj) \
  111. { \
  112.     return vlc_sd_probe_Add ((struct vlc_probe_t *)obj, \
  113.                              name "{longname=\"" longname "\"}", \
  114.                              longname, cat); \
  115. }
  116.  
  117. /** @} */
  118. # ifdef __cplusplus
  119. }
  120. # endif
  121.  
  122. #endif
  123.