-private:
- Lockable* _lockable;
-};
-
-
-class MediaServer
-{
-public:
-
- static void parseDeviceDescription( IXML_Document* doc, const char* location, Cookie* cookie );
-
- MediaServer( const char* UDN, const char* friendlyName, Cookie* cookie );
- ~MediaServer();
-
- const char* getUDN() const;
- const char* getFriendlyName() const;
-
- void setContentDirectoryEventURL( const char* url );
- const char* getContentDirectoryEventURL() const;
-
- void setContentDirectoryControlURL( const char* url );
- const char* getContentDirectoryControlURL() const;
-
- void subscribeToContentDirectory();
- void fetchContents();
-
- void setPlaylistNode( playlist_item_t* node );
-
- bool compareSID( const char* sid );
-
-private:
-
- bool _fetchContents( Container* parent );
- void _buildPlaylist( Container* container );
- IXML_Document* _browseAction( const char*, const char*, const char*, const char*, const char*, const char* );
-
- Cookie* _cookie;
-
- Container* _contents;
- playlist_item_t* _playlistNode;
-
- std::string _UDN;
- std::string _friendlyName;
-
- std::string _contentDirectoryEventURL;
- std::string _contentDirectoryControlURL;
-
- int _subscriptionTimeOut;
- Upnp_SID _subscriptionID;
-};
-
-
-class MediaServerList
-{
-public:
-
- MediaServerList( Cookie* cookie );
- ~MediaServerList();
-
- bool addServer( MediaServer* s );
- void removeServer( const char* UDN );
-
- MediaServer* getServer( const char* UDN );
- MediaServer* getServerBySID( const char* );
-
-private:
-
- Cookie* _cookie;
-
- std::vector<MediaServer*> _list;
-};
-
-
-class Item
-{
-public:
-
- Item( Container* parent, const char* objectID, const char* title, const char* resource );
-
- const char* getObjectID() const;
- const char* getTitle() const;
- const char* getResource() const;
-
- void setPlaylistNode( playlist_item_t* node );
- playlist_item_t* getPlaylistNode() const ;
-
-private:
-
- playlist_item_t* _playlistNode;
-
- Container* _parent;
- std::string _objectID;
- std::string _title;
- std::string _resource;
-};
-
-
-class Container
-{
-public:
-
- Container( Container* parent, const char* objectID, const char* title );
- ~Container();
-
- void addItem( Item* item );
- void addContainer( Container* container );
-
- const char* getObjectID() const;
- const char* getTitle() const;
-
- unsigned int getNumItems() const;
- unsigned int getNumContainers() const;
-
- Item* getItem( unsigned int i ) const;
- Container* getContainer( unsigned int i ) const;
-
- void setPlaylistNode( playlist_item_t* node );
- playlist_item_t* getPlaylistNode() const;
-
-private:
-
- playlist_item_t* _playlistNode;
-
- Container* _parent;
-
- std::string _objectID;
- std::string _title;
- std::vector<Item*> _items;
- std::vector<Container*> _containers;
-};
-
-
-// VLC callback prototypes
-
-static void Run( services_discovery_t *p_sd );
-static playlist_t *pl_Get( services_discovery_t *p_sd )
-{
- return p_sd->p_sys->p_playlist;
-}
-
-// More prototypes...
-
-static int Callback( Upnp_EventType eventType, void* event, void* pCookie );
-
-const char* xml_getChildElementValue( IXML_Element* parent, const char* tagName );
-IXML_Document* parseBrowseResult( IXML_Document* doc );
-
-
-// VLC callbacks...
-
-static int Open( vlc_object_t *p_this )
-{
- services_discovery_t *p_sd = ( services_discovery_t* )p_this;
- services_discovery_sys_t *p_sys = ( services_discovery_sys_t * )
- malloc( sizeof( services_discovery_sys_t ) );
-
- p_sd->pf_run = Run;
- p_sd->p_sys = p_sys;
- p_sys->p_playlist = pl_Yield( p_sd );
-
- /* Create our playlist node */
- vlc_object_lock( p_sys->p_playlist );
- playlist_NodesPairCreate( pl_Get( p_sd ), _("Devices"),
- &p_sys->p_node_cat, &p_sys->p_node_one,
- true );
- vlc_object_unlock( p_sys->p_playlist );
-