Commit 2d8eb31e authored by Austin Burrow's avatar Austin Burrow Committed by Jean-Baptiste Kempf

UPNP: Cleaned up code so it goes by the code conventions.

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent b5ddf37d
...@@ -47,9 +47,9 @@ const char* CONTENT_DIRECTORY_SERVICE_TYPE = "urn:schemas-upnp-org:service:Conte ...@@ -47,9 +47,9 @@ const char* CONTENT_DIRECTORY_SERVICE_TYPE = "urn:schemas-upnp-org:service:Conte
// VLC handle // VLC handle
struct services_discovery_sys_t struct services_discovery_sys_t
{ {
UpnpClient_Handle clientHandle; UpnpClient_Handle client_handle;
MediaServerList* serverList; MediaServerList* p_server_list;
vlc_mutex_t callbackLock; vlc_mutex_t callback_lock;
}; };
// VLC callback prototypes // VLC callback prototypes
...@@ -73,19 +73,19 @@ vlc_module_end(); ...@@ -73,19 +73,19 @@ vlc_module_end();
// More prototypes... // More prototypes...
static int Callback( Upnp_EventType eventType, void* event, void* user_data ); static int Callback( Upnp_EventType event_type, void* p_event, void* p_user_data );
const char* xml_getChildElementValue( IXML_Element* parent, const char* xml_getChildElementValue( IXML_Element* p_parent,
const char* tagName ); const char* psz_tag_name );
IXML_Document* parseBrowseResult( IXML_Document* doc ); IXML_Document* parseBrowseResult( IXML_Document* p_doc );
// VLC callbacks... // VLC callbacks...
static int Open( vlc_object_t *p_this ) static int Open( vlc_object_t *p_this )
{ {
int res; int i_res;
services_discovery_t *p_sd = ( services_discovery_t* )p_this; services_discovery_t *p_sd = ( services_discovery_t* )p_this;
services_discovery_sys_t *p_sys = ( services_discovery_sys_t * ) services_discovery_sys_t *p_sys = ( services_discovery_sys_t * )
calloc( 1, sizeof( services_discovery_sys_t ) ); calloc( 1, sizeof( services_discovery_sys_t ) );
...@@ -93,39 +93,39 @@ static int Open( vlc_object_t *p_this ) ...@@ -93,39 +93,39 @@ static int Open( vlc_object_t *p_this )
if(!(p_sd->p_sys = p_sys)) if(!(p_sd->p_sys = p_sys))
return VLC_ENOMEM; return VLC_ENOMEM;
res = UpnpInit( 0, 0 ); i_res = UpnpInit( 0, 0 );
if( res != UPNP_E_SUCCESS ) if( i_res != UPNP_E_SUCCESS )
{ {
msg_Err( p_sd, "%s", UpnpGetErrorMessage( res ) ); msg_Err( p_sd, "%s", UpnpGetErrorMessage( i_res ) );
free( p_sys ); free( p_sys );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
p_sys->serverList = new MediaServerList( p_sd ); p_sys->p_server_list = new MediaServerList( p_sd );
vlc_mutex_init( &p_sys->callbackLock ); vlc_mutex_init( &p_sys->callback_lock );
res = UpnpRegisterClient( Callback, p_sd, &p_sys->clientHandle ); i_res = UpnpRegisterClient( Callback, p_sd, &p_sys->client_handle );
if( res != UPNP_E_SUCCESS ) if( i_res != UPNP_E_SUCCESS )
{ {
msg_Err( p_sd, "%s", UpnpGetErrorMessage( res ) ); msg_Err( p_sd, "%s", UpnpGetErrorMessage( i_res ) );
Close( (vlc_object_t*) p_sd ); Close( (vlc_object_t*) p_sd );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
res = UpnpSearchAsync( p_sys->clientHandle, 5, i_res = UpnpSearchAsync( p_sys->client_handle, 5,
MEDIA_SERVER_DEVICE_TYPE, p_sd ); MEDIA_SERVER_DEVICE_TYPE, p_sd );
if( res != UPNP_E_SUCCESS ) if( i_res != UPNP_E_SUCCESS )
{ {
msg_Err( p_sd, "%s", UpnpGetErrorMessage( res ) ); msg_Err( p_sd, "%s", UpnpGetErrorMessage( i_res ) );
Close( (vlc_object_t*) p_sd ); Close( (vlc_object_t*) p_sd );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
res = UpnpSetMaxContentLength( 262144 ); i_res = UpnpSetMaxContentLength( 262144 );
if( res != UPNP_E_SUCCESS ) if( i_res != UPNP_E_SUCCESS )
{ {
msg_Err( p_sd, "%s", UpnpGetErrorMessage( res ) ); msg_Err( p_sd, "%s", UpnpGetErrorMessage( i_res ) );
Close( (vlc_object_t*) p_sd ); Close( (vlc_object_t*) p_sd );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
...@@ -138,8 +138,8 @@ static void Close( vlc_object_t *p_this ) ...@@ -138,8 +138,8 @@ static void Close( vlc_object_t *p_this )
services_discovery_t *p_sd = ( services_discovery_t* )p_this; services_discovery_t *p_sd = ( services_discovery_t* )p_this;
UpnpFinish(); UpnpFinish();
delete p_sd->p_sys->serverList; delete p_sd->p_sys->p_server_list;
vlc_mutex_destroy( &p_sd->p_sys->callbackLock ); vlc_mutex_destroy( &p_sd->p_sys->callback_lock );
free( p_sd->p_sys ); free( p_sd->p_sys );
} }
...@@ -147,106 +147,106 @@ static void Close( vlc_object_t *p_this ) ...@@ -147,106 +147,106 @@ static void Close( vlc_object_t *p_this )
// XML utility functions: // XML utility functions:
// Returns the value of a child element, or 0 on error // Returns the value of a child element, or 0 on error
const char* xml_getChildElementValue( IXML_Element* parent, const char* xml_getChildElementValue( IXML_Element* p_parent,
const char* tagName ) const char* _psz_tag_name )
{ {
if ( !parent ) return 0; if ( !p_parent ) return 0;
if ( !tagName ) return 0; if ( !_psz_tag_name ) return 0;
char* s = strdup( tagName ); char* psz_tag_name = strdup( _psz_tag_name );
IXML_NodeList* nodeList = ixmlElement_getElementsByTagName( parent, s ); IXML_NodeList* p_node_list = ixmlElement_getElementsByTagName( p_parent, psz_tag_name );
free( s ); free( psz_tag_name );
if ( !nodeList ) return 0; if ( !p_node_list ) return 0;
IXML_Node* element = ixmlNodeList_item( nodeList, 0 ); IXML_Node* p_element = ixmlNodeList_item( p_node_list, 0 );
ixmlNodeList_free( nodeList ); ixmlNodeList_free( p_node_list );
if ( !element ) return 0; if ( !p_element ) return 0;
IXML_Node* textNode = ixmlNode_getFirstChild( element ); IXML_Node* p_text_node = ixmlNode_getFirstChild( p_element );
if ( !textNode ) return 0; if ( !p_text_node ) return 0;
return ixmlNode_getNodeValue( textNode ); return ixmlNode_getNodeValue( p_text_node );
} }
// Extracts the result document from a SOAP response // Extracts the result document from a SOAP response
IXML_Document* parseBrowseResult( IXML_Document* doc ) IXML_Document* parseBrowseResult( IXML_Document* p_doc )
{ {
ixmlRelaxParser(1); ixmlRelaxParser(1);
if ( !doc ) return 0; if ( !p_doc ) return 0;
IXML_NodeList* resultList = ixmlDocument_getElementsByTagName( doc, IXML_NodeList* p_result_list = ixmlDocument_getElementsByTagName( p_doc,
"Result" ); "Result" );
if ( !resultList ) return 0; if ( !p_result_list ) return 0;
IXML_Node* resultNode = ixmlNodeList_item( resultList, 0 ); IXML_Node* p_result_node = ixmlNodeList_item( p_result_list, 0 );
ixmlNodeList_free( resultList ); ixmlNodeList_free( p_result_list );
if ( !resultNode ) return 0; if ( !p_result_node ) return 0;
IXML_Node* textNode = ixmlNode_getFirstChild( resultNode ); IXML_Node* p_text_node = ixmlNode_getFirstChild( p_result_node );
if ( !textNode ) return 0; if ( !p_text_node ) return 0;
const char* resultString = ixmlNode_getNodeValue( textNode ); const char* psz_result_string = ixmlNode_getNodeValue( p_text_node );
char* resultXML = strdup( resultString ); char* psz_result_xml = strdup( psz_result_string );
IXML_Document* browseDoc = ixmlParseBuffer( resultXML ); IXML_Document* p_browse_doc = ixmlParseBuffer( psz_result_xml );
free( resultXML ); free( psz_result_xml );
return browseDoc; return p_browse_doc;
} }
// Handles all UPnP events // Handles all UPnP events
static int Callback( Upnp_EventType eventType, void* event, void* user_data ) static int Callback( Upnp_EventType event_type, void* p_event, void* p_user_data )
{ {
services_discovery_t *p_sd = ( services_discovery_t* ) user_data; services_discovery_t* p_sd = ( services_discovery_t* ) p_user_data;
services_discovery_sys_t* p_sys = p_sd->p_sys; services_discovery_sys_t* p_sys = p_sd->p_sys;
vlc_mutex_locker locker( &p_sys->callbackLock ); vlc_mutex_locker locker( &p_sys->callback_lock );
switch( eventType ) {
switch( event_type )
{
case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE: case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
case UPNP_DISCOVERY_SEARCH_RESULT: case UPNP_DISCOVERY_SEARCH_RESULT:
{ {
struct Upnp_Discovery* discovery = ( struct Upnp_Discovery* )event; struct Upnp_Discovery* p_discovery = ( struct Upnp_Discovery* )p_event;
IXML_Document *descriptionDoc = 0; IXML_Document *p_description_doc = 0;
int res; int i_res;
res = UpnpDownloadXmlDoc( discovery->Location, &descriptionDoc ); i_res = UpnpDownloadXmlDoc( p_discovery->Location, &p_description_doc );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( p_sd, msg_Dbg( p_sd,
"%s:%d: Could not download device description!", "%s:%d: Could not download device description!",
__FILE__, __LINE__ ); __FILE__, __LINE__ );
return res; return i_res;
} }
MediaServer::parseDeviceDescription( descriptionDoc, MediaServer::parseDeviceDescription( p_description_doc,
discovery->Location, p_sd ); p_discovery->Location, p_sd );
ixmlDocument_free( descriptionDoc ); ixmlDocument_free( p_description_doc );
} }
break; break;
case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE: case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
{ {
struct Upnp_Discovery* discovery = ( struct Upnp_Discovery* )event; struct Upnp_Discovery* p_discovery = ( struct Upnp_Discovery* )p_event;
p_sys->serverList->removeServer( discovery->DeviceId ); p_sys->p_server_list->removeServer( p_discovery->DeviceId );
} }
break; break;
case UPNP_EVENT_RECEIVED: case UPNP_EVENT_RECEIVED:
{ {
Upnp_Event* e = ( Upnp_Event* )event; Upnp_Event* p_e = ( Upnp_Event* )p_event;
MediaServer* server = p_sys->serverList->getServerBySID( e->Sid ); MediaServer* p_server = p_sys->p_server_list->getServerBySID( p_e->Sid );
if ( server ) server->fetchContents(); if ( p_server ) p_server->fetchContents();
} }
break; break;
...@@ -255,10 +255,10 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data ) ...@@ -255,10 +255,10 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data )
{ {
// Re-subscribe... // Re-subscribe...
Upnp_Event_Subscribe* s = ( Upnp_Event_Subscribe* )event; Upnp_Event_Subscribe* p_s = ( Upnp_Event_Subscribe* )p_event;
MediaServer* server = p_sys->serverList->getServerBySID( s->Sid ); MediaServer* p_server = p_sys->p_server_list->getServerBySID( p_s->Sid );
if ( server ) server->subscribeToContentDirectory(); if ( p_server ) p_server->subscribeToContentDirectory();
} }
break; break;
...@@ -273,7 +273,7 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data ) ...@@ -273,7 +273,7 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data )
default: default:
msg_Dbg( p_sd, msg_Dbg( p_sd,
"%s:%d: DEBUG: UNHANDLED EVENT ( TYPE=%d )", "%s:%d: DEBUG: UNHANDLED EVENT ( TYPE=%d )",
__FILE__, __LINE__, eventType ); __FILE__, __LINE__, event_type );
break; break;
} }
...@@ -285,54 +285,54 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data ) ...@@ -285,54 +285,54 @@ static int Callback( Upnp_EventType eventType, void* event, void* user_data )
// MediaServer... // MediaServer...
void MediaServer::parseDeviceDescription( IXML_Document* doc, void MediaServer::parseDeviceDescription( IXML_Document* p_doc,
const char* location, const char* p_location,
services_discovery_t* p_sd ) services_discovery_t* p_sd )
{ {
if ( !doc ) if ( !p_doc )
{ {
msg_Dbg( p_sd, "%s:%d: NULL", __FILE__, __LINE__ ); msg_Dbg( p_sd, "%s:%d: NULL", __FILE__, __LINE__ );
return; return;
} }
if ( !location ) if ( !p_location )
{ {
msg_Dbg( p_sd, "%s:%d: NULL", __FILE__, __LINE__ ); msg_Dbg( p_sd, "%s:%d: NULL", __FILE__, __LINE__ );
return; return;
} }
const char* baseURL = location; const char* psz_base_url = p_location;
// Try to extract baseURL // Try to extract baseURL
IXML_NodeList* urlList = ixmlDocument_getElementsByTagName( doc, "baseURL" ); IXML_NodeList* p_url_list = ixmlDocument_getElementsByTagName( p_doc, "baseURL" );
if ( !urlList ) if ( !p_url_list )
{ {
if ( IXML_Node* urlNode = ixmlNodeList_item( urlList, 0 ) ) if ( IXML_Node* p_url_node = ixmlNodeList_item( p_url_list, 0 ) )
{ {
IXML_Node* textNode = ixmlNode_getFirstChild( urlNode ); IXML_Node* p_text_node = ixmlNode_getFirstChild( p_url_node );
if ( textNode ) baseURL = ixmlNode_getNodeValue( textNode ); if ( p_text_node ) psz_base_url = ixmlNode_getNodeValue( p_text_node );
} }
ixmlNodeList_free( urlList ); ixmlNodeList_free( p_url_list );
} }
// Get devices // Get devices
IXML_NodeList* deviceList = IXML_NodeList* p_device_list =
ixmlDocument_getElementsByTagName( doc, "device" ); ixmlDocument_getElementsByTagName( p_doc, "device" );
if ( deviceList ) if ( p_device_list )
{ {
for ( unsigned int i = 0; i < ixmlNodeList_length( deviceList ); i++ ) for ( unsigned int i = 0; i < ixmlNodeList_length( p_device_list ); i++ )
{ {
IXML_Element* deviceElement = IXML_Element* p_device_element =
( IXML_Element* ) ixmlNodeList_item( deviceList, i ); ( IXML_Element* ) ixmlNodeList_item( p_device_list, i );
const char* deviceType = xml_getChildElementValue( deviceElement, const char* psz_device_type = xml_getChildElementValue( p_device_element,
"deviceType" ); "deviceType" );
if ( !deviceType ) if ( !psz_device_type )
{ {
msg_Dbg( p_sd, msg_Dbg( p_sd,
"%s:%d: no deviceType!", "%s:%d: no deviceType!",
...@@ -340,131 +340,131 @@ void MediaServer::parseDeviceDescription( IXML_Document* doc, ...@@ -340,131 +340,131 @@ void MediaServer::parseDeviceDescription( IXML_Document* doc,
continue; continue;
} }
if ( strcmp( MEDIA_SERVER_DEVICE_TYPE, deviceType ) != 0 ) if ( strcmp( MEDIA_SERVER_DEVICE_TYPE, psz_device_type ) != 0 )
continue; continue;
const char* UDN = xml_getChildElementValue( deviceElement, "UDN" ); const char* psz_udn = xml_getChildElementValue( p_device_element, "UDN" );
if ( !UDN ) if ( !psz_udn )
{ {
msg_Dbg( p_sd, "%s:%d: no UDN!", msg_Dbg( p_sd, "%s:%d: no UDN!",
__FILE__, __LINE__ ); __FILE__, __LINE__ );
continue; continue;
} }
if ( p_sd->p_sys->serverList->getServer( UDN ) != 0 ) if ( p_sd->p_sys->p_server_list->getServer( psz_udn ) != 0 )
continue; continue;
const char* friendlyName = const char* psz_friendly_name =
xml_getChildElementValue( deviceElement, xml_getChildElementValue( p_device_element,
"friendlyName" ); "friendlyName" );
if ( !friendlyName ) if ( !psz_friendly_name )
{ {
msg_Dbg( p_sd, "%s:%d: no friendlyName!", __FILE__, __LINE__ ); msg_Dbg( p_sd, "%s:%d: no friendlyName!", __FILE__, __LINE__ );
continue; continue;
} }
MediaServer* server = new MediaServer( UDN, friendlyName, p_sd ); MediaServer* p_server = new MediaServer( psz_udn, psz_friendly_name, p_sd );
if ( !p_sd->p_sys->serverList->addServer( server ) ) if ( !p_sd->p_sys->p_server_list->addServer( p_server ) )
{ {
delete server; delete p_server;
server = 0; p_server = 0;
continue; continue;
} }
// Check for ContentDirectory service... // Check for ContentDirectory service...
IXML_NodeList* serviceList = IXML_NodeList* p_service_list =
ixmlElement_getElementsByTagName( deviceElement, ixmlElement_getElementsByTagName( p_device_element,
"service" ); "service" );
if ( serviceList ) if ( p_service_list )
{ {
for ( unsigned int j = 0; for ( unsigned int j = 0;
j < ixmlNodeList_length( serviceList ); j++ ) j < ixmlNodeList_length( p_service_list ); j++ )
{ {
IXML_Element* serviceElement = IXML_Element* p_service_element =
( IXML_Element* ) ixmlNodeList_item( serviceList, j ); ( IXML_Element* ) ixmlNodeList_item( p_service_list, j );
const char* serviceType = const char* psz_service_type =
xml_getChildElementValue( serviceElement, xml_getChildElementValue( p_service_element,
"serviceType" ); "serviceType" );
if ( !serviceType ) if ( !psz_service_type )
continue; continue;
if ( strcmp( CONTENT_DIRECTORY_SERVICE_TYPE, if ( strcmp( CONTENT_DIRECTORY_SERVICE_TYPE,
serviceType ) != 0 ) psz_service_type ) != 0 )
continue; continue;
const char* eventSubURL = const char* psz_event_sub_url =
xml_getChildElementValue( serviceElement, xml_getChildElementValue( p_service_element,
"eventSubURL" ); "eventSubURL" );
if ( !eventSubURL ) if ( !psz_event_sub_url )
continue; continue;
const char* controlURL = const char* psz_control_url =
xml_getChildElementValue( serviceElement, xml_getChildElementValue( p_service_element,
"controlURL" ); "controlURL" );
if ( !controlURL ) if ( !psz_control_url )
continue; continue;
// Try to subscribe to ContentDirectory service // Try to subscribe to ContentDirectory service
char* url = ( char* ) malloc( strlen( baseURL ) + char* psz_url = ( char* ) malloc( strlen( psz_base_url ) +
strlen( eventSubURL ) + 1 ); strlen( psz_event_sub_url ) + 1 );
if ( url ) if ( psz_url )
{ {
char* s1 = strdup( baseURL ); char* psz_s1 = strdup( psz_base_url );
char* s2 = strdup( eventSubURL ); char* psz_s2 = strdup( psz_event_sub_url );
if ( UpnpResolveURL( s1, s2, url ) == if ( UpnpResolveURL( psz_s1, psz_s2, psz_url ) ==
UPNP_E_SUCCESS ) UPNP_E_SUCCESS )
{ {
server->setContentDirectoryEventURL( url ); p_server->setContentDirectoryEventURL( psz_url );
server->subscribeToContentDirectory(); p_server->subscribeToContentDirectory();
} }
free( s1 ); free( psz_s1 );
free( s2 ); free( psz_s2 );
free( url ); free( psz_url );
} }
// Try to browse content directory... // Try to browse content directory...
url = ( char* ) malloc( strlen( baseURL ) + psz_url = ( char* ) malloc( strlen( psz_base_url ) +
strlen( controlURL ) + 1 ); strlen( psz_control_url ) + 1 );
if ( url ) if ( psz_url )
{ {
char* s1 = strdup( baseURL ); char* psz_s1 = strdup( psz_base_url );
char* s2 = strdup( controlURL ); char* psz_s2 = strdup( psz_control_url );
if ( UpnpResolveURL( s1, s2, url ) == if ( UpnpResolveURL( psz_s1, psz_s2, psz_url ) ==
UPNP_E_SUCCESS ) UPNP_E_SUCCESS )
{ {
server->setContentDirectoryControlURL( url ); p_server->setContentDirectoryControlURL( psz_url );
server->fetchContents(); p_server->fetchContents();
} }
free( s1 ); free( psz_s1 );
free( s2 ); free( psz_s2 );
free( url ); free( psz_url );
} }
} }
ixmlNodeList_free( serviceList ); ixmlNodeList_free( p_service_list );
} }
} }
ixmlNodeList_free( deviceList ); ixmlNodeList_free( p_device_list );
} }
} }
MediaServer::MediaServer( const char* UDN, MediaServer::MediaServer( const char* psz_udn,
const char* friendlyName, const char* psz_friendly_name,
services_discovery_t* p_sd ) services_discovery_t* p_sd )
{ {
_p_sd = p_sd; _p_sd = p_sd;
_UDN = UDN; _UDN = psz_udn;
_friendlyName = friendlyName; _friendlyName = psz_friendly_name;
_contents = NULL; _contents = NULL;
_inputItem = NULL; _inputItem = NULL;
...@@ -487,9 +487,9 @@ const char* MediaServer::getFriendlyName() const ...@@ -487,9 +487,9 @@ const char* MediaServer::getFriendlyName() const
return s; return s;
} }
void MediaServer::setContentDirectoryEventURL( const char* url ) void MediaServer::setContentDirectoryEventURL( const char* psz_url )
{ {
_contentDirectoryEventURL = url; _contentDirectoryEventURL = psz_url;
} }
const char* MediaServer::getContentDirectoryEventURL() const const char* MediaServer::getContentDirectoryEventURL() const
...@@ -498,9 +498,9 @@ const char* MediaServer::getContentDirectoryEventURL() const ...@@ -498,9 +498,9 @@ const char* MediaServer::getContentDirectoryEventURL() const
return s; return s;
} }
void MediaServer::setContentDirectoryControlURL( const char* url ) void MediaServer::setContentDirectoryControlURL( const char* psz_url )
{ {
_contentDirectoryControlURL = url; _contentDirectoryControlURL = psz_url;
} }
const char* MediaServer::getContentDirectoryControlURL() const const char* MediaServer::getContentDirectoryControlURL() const
...@@ -510,28 +510,28 @@ const char* MediaServer::getContentDirectoryControlURL() const ...@@ -510,28 +510,28 @@ const char* MediaServer::getContentDirectoryControlURL() const
void MediaServer::subscribeToContentDirectory() void MediaServer::subscribeToContentDirectory()
{ {
const char* url = getContentDirectoryEventURL(); const char* psz_url = getContentDirectoryEventURL();
if ( !url || strcmp( url, "" ) == 0 ) if ( !psz_url || strcmp( psz_url, "" ) == 0 )
{ {
msg_Dbg( _p_sd, "No subscription url set!" ); msg_Dbg( _p_sd, "No subscription url set!" );
return; return;
} }
int timeOut = 1810; int i_timeout = 1810;
Upnp_SID sid; Upnp_SID sid;
int res = UpnpSubscribe( _p_sd->p_sys->clientHandle, url, &timeOut, sid ); int i_res = UpnpSubscribe( _p_sd->p_sys->client_handle, psz_url, &i_timeout, sid );
if ( res == UPNP_E_SUCCESS ) if ( i_res == UPNP_E_SUCCESS )
{ {
_subscriptionTimeOut = timeOut; _subscriptionTimeOut = i_timeout;
memcpy( _subscriptionID, sid, sizeof( Upnp_SID ) ); memcpy( _subscriptionID, sid, sizeof( Upnp_SID ) );
} }
else else
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: WARNING: '%s': %s", __FILE__, __LINE__, "%s:%d: WARNING: '%s': %s", __FILE__, __LINE__,
getFriendlyName(), UpnpGetErrorMessage( res ) ); getFriendlyName(), UpnpGetErrorMessage( i_res ) );
} }
} }
...@@ -542,121 +542,121 @@ IXML_Document* MediaServer::_browseAction( const char* pObjectID, ...@@ -542,121 +542,121 @@ IXML_Document* MediaServer::_browseAction( const char* pObjectID,
const char* pRequestedCount, const char* pRequestedCount,
const char* pSortCriteria ) const char* pSortCriteria )
{ {
IXML_Document* action = 0; IXML_Document* p_action = 0;
IXML_Document* response = 0; IXML_Document* p_response = 0;
const char* url = getContentDirectoryControlURL(); const char* psz_url = getContentDirectoryControlURL();
if ( !url || strcmp( url, "" ) == 0 ) if ( !psz_url || strcmp( psz_url, "" ) == 0 )
{ {
msg_Dbg( _p_sd, "No subscription url set!" ); msg_Dbg( _p_sd, "No subscription url set!" );
return 0; return 0;
} }
char* ObjectID = strdup( pObjectID ); char* psz_object_id = strdup( pObjectID );
char* BrowseFlag = strdup( pBrowseFlag ); char* psz_browse_flag = strdup( pBrowseFlag );
char* Filter = strdup( pFilter ); char* psz_filter = strdup( pFilter );
char* StartingIndex = strdup( pStartingIndex ); char* psz_starting_index = strdup( pStartingIndex );
char* RequestedCount = strdup( pRequestedCount ); char* psz_requested_count = strdup( pRequestedCount );
char* SortCriteria = strdup( pSortCriteria ); char* psz_sort_criteria = strdup( pSortCriteria );
char* serviceType = strdup( CONTENT_DIRECTORY_SERVICE_TYPE ); char* psz_service_type = strdup( CONTENT_DIRECTORY_SERVICE_TYPE );
int res; int i_res;
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "ObjectID", ObjectID ); psz_service_type, "ObjectID", psz_object_id );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); UpnpGetErrorMessage( i_res ) );
goto browseActionCleanup; goto browseActionCleanup;
} }
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "BrowseFlag", BrowseFlag ); psz_service_type, "BrowseFlag", psz_browse_flag );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); UpnpGetErrorMessage( i_res ) );
goto browseActionCleanup; goto browseActionCleanup;
} }
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "Filter", Filter ); psz_service_type, "Filter", psz_filter );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); UpnpGetErrorMessage( i_res ) );
goto browseActionCleanup; goto browseActionCleanup;
} }
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "StartingIndex", StartingIndex ); psz_service_type, "StartingIndex", psz_starting_index );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); UpnpGetErrorMessage( i_res ) );
goto browseActionCleanup; goto browseActionCleanup;
} }
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "RequestedCount", RequestedCount ); psz_service_type, "RequestedCount", psz_requested_count );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); goto browseActionCleanup; } UpnpGetErrorMessage( i_res ) ); goto browseActionCleanup; }
res = UpnpAddToAction( &action, "Browse", i_res = UpnpAddToAction( &p_action, "Browse",
serviceType, "SortCriteria", SortCriteria ); psz_service_type, "SortCriteria", psz_sort_criteria );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s", __FILE__, __LINE__, "%s:%d: ERROR: %s", __FILE__, __LINE__,
UpnpGetErrorMessage( res ) ); UpnpGetErrorMessage( i_res ) );
goto browseActionCleanup; goto browseActionCleanup;
} }
res = UpnpSendAction( _p_sd->p_sys->clientHandle, i_res = UpnpSendAction( _p_sd->p_sys->client_handle,
url, psz_url,
CONTENT_DIRECTORY_SERVICE_TYPE, CONTENT_DIRECTORY_SERVICE_TYPE,
0, 0,
action, p_action,
&response ); &p_response );
if ( res != UPNP_E_SUCCESS ) if ( i_res != UPNP_E_SUCCESS )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR: %s when trying the send() action with URL: %s", "%s:%d: ERROR: %s when trying the send() action with URL: %s",
__FILE__, __LINE__, __FILE__, __LINE__,
UpnpGetErrorMessage( res ), url ); UpnpGetErrorMessage( i_res ), psz_url );
ixmlDocument_free( response ); ixmlDocument_free( p_response );
response = 0; p_response = 0;
} }
browseActionCleanup: browseActionCleanup:
free( ObjectID ); free( psz_object_id );
free( BrowseFlag ); free( psz_browse_flag );
free( Filter ); free( psz_filter );
free( StartingIndex ); free( psz_starting_index );
free( RequestedCount ); free( psz_requested_count );
free( SortCriteria ); free( psz_sort_criteria );
free( serviceType ); free( psz_service_type );
ixmlDocument_free( action ); ixmlDocument_free( p_action );
return response; return p_response;
} }
void MediaServer::fetchContents() void MediaServer::fetchContents()
...@@ -670,19 +670,19 @@ void MediaServer::fetchContents() ...@@ -670,19 +670,19 @@ void MediaServer::fetchContents()
_buildPlaylist( _contents, NULL ); _buildPlaylist( _contents, NULL );
} }
bool MediaServer::_fetchContents( Container* parent ) bool MediaServer::_fetchContents( Container* p_parent )
{ {
if (!parent) if (!p_parent)
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: parent==NULL", __FILE__, __LINE__ ); "%s:%d: parent==NULL", __FILE__, __LINE__ );
return false; return false;
} }
IXML_Document* response = _browseAction( parent->getObjectID(), IXML_Document* p_response = _browseAction( p_parent->getObjectID(),
"BrowseDirectChildren", "BrowseDirectChildren",
"*", "0", "0", "" ); "*", "0", "0", "" );
if ( !response ) if ( !p_response )
{ {
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"%s:%d: ERROR! No response from browse() action", "%s:%d: ERROR! No response from browse() action",
...@@ -690,8 +690,8 @@ bool MediaServer::_fetchContents( Container* parent ) ...@@ -690,8 +690,8 @@ bool MediaServer::_fetchContents( Container* parent )
return false; return false;
} }
IXML_Document* result = parseBrowseResult( response ); IXML_Document* result = parseBrowseResult( p_response );
ixmlDocument_free( response ); ixmlDocument_free( p_response );
if ( !result ) if ( !result )
{ {
...@@ -735,14 +735,14 @@ bool MediaServer::_fetchContents( Container* parent ) ...@@ -735,14 +735,14 @@ bool MediaServer::_fetchContents( Container* parent )
if ( resource && childCount < 1 ) if ( resource && childCount < 1 )
{ {
Item* item = new Item( parent, objectID, title, resource ); Item* item = new Item( p_parent, objectID, title, resource );
parent->addItem( item ); p_parent->addItem( item );
} }
else else
{ {
Container* container = new Container( parent, objectID, title ); Container* container = new Container( p_parent, objectID, title );
parent->addContainer( container ); p_parent->addContainer( container );
if ( childCount > 0 ) if ( childCount > 0 )
_fetchContents( container ); _fetchContents( container );
...@@ -778,8 +778,8 @@ bool MediaServer::_fetchContents( Container* parent ) ...@@ -778,8 +778,8 @@ bool MediaServer::_fetchContents( Container* parent )
if ( !resource ) if ( !resource )
continue; continue;
Item* item = new Item( parent, objectID, title, resource ); Item* item = new Item( p_parent, objectID, title, resource );
parent->addItem( item ); p_parent->addItem( item );
} }
ixmlNodeList_free( itemNodeList ); ixmlNodeList_free( itemNodeList );
} }
...@@ -788,15 +788,15 @@ bool MediaServer::_fetchContents( Container* parent ) ...@@ -788,15 +788,15 @@ bool MediaServer::_fetchContents( Container* parent )
return true; return true;
} }
void MediaServer::_buildPlaylist( Container* parent, input_item_node_t *p_input_node ) void MediaServer::_buildPlaylist( Container* p_parent, input_item_node_t *p_input_node )
{ {
bool send = p_input_node == NULL; bool send = p_input_node == NULL;
if( send ) if( send )
p_input_node = input_item_node_Create( parent->getInputItem() ); p_input_node = input_item_node_Create( p_parent->getInputItem() );
for ( unsigned int i = 0; i < parent->getNumContainers(); i++ ) for ( unsigned int i = 0; i < p_parent->getNumContainers(); i++ )
{ {
Container* container = parent->getContainer( i ); Container* container = p_parent->getContainer( i );
input_item_t* p_input_item = input_item_New( _p_sd, "vlc://nop", container->getTitle() ); input_item_t* p_input_item = input_item_New( _p_sd, "vlc://nop", container->getTitle() );
input_item_node_t *p_new_node = input_item_node_t *p_new_node =
...@@ -806,9 +806,9 @@ void MediaServer::_buildPlaylist( Container* parent, input_item_node_t *p_input_ ...@@ -806,9 +806,9 @@ void MediaServer::_buildPlaylist( Container* parent, input_item_node_t *p_input_
_buildPlaylist( container, p_new_node ); _buildPlaylist( container, p_new_node );
} }
for ( unsigned int i = 0; i < parent->getNumItems(); i++ ) for ( unsigned int i = 0; i < p_parent->getNumItems(); i++ )
{ {
Item* item = parent->getItem( i ); Item* item = p_parent->getItem( i );
input_item_t* p_input_item = input_item_New( _p_sd, input_item_t* p_input_item = input_item_New( _p_sd,
item->getResource(), item->getResource(),
...@@ -875,13 +875,13 @@ bool MediaServerList::addServer( MediaServer* s ) ...@@ -875,13 +875,13 @@ bool MediaServerList::addServer( MediaServer* s )
return true; return true;
} }
MediaServer* MediaServerList::getServer( const char* UDN ) MediaServer* MediaServerList::getServer( const char* psz_udn )
{ {
MediaServer* result = 0; MediaServer* result = 0;
for ( unsigned int i = 0; i < _list.size(); i++ ) for ( unsigned int i = 0; i < _list.size(); i++ )
{ {
if( strcmp( UDN, _list[i]->getUDN() ) == 0 ) if( strcmp( psz_udn, _list[i]->getUDN() ) == 0 )
{ {
result = _list[i]; result = _list[i];
break; break;
...@@ -893,35 +893,35 @@ MediaServer* MediaServerList::getServer( const char* UDN ) ...@@ -893,35 +893,35 @@ MediaServer* MediaServerList::getServer( const char* UDN )
MediaServer* MediaServerList::getServerBySID( const char* sid ) MediaServer* MediaServerList::getServerBySID( const char* sid )
{ {
MediaServer* server = 0; MediaServer* p_server = 0;
for ( unsigned int i = 0; i < _list.size(); i++ ) for ( unsigned int i = 0; i < _list.size(); i++ )
{ {
if ( _list[i]->compareSID( sid ) ) if ( _list[i]->compareSID( sid ) )
{ {
server = _list[i]; p_server = _list[i];
break; break;
} }
} }
return server; return p_server;
} }
void MediaServerList::removeServer( const char* UDN ) void MediaServerList::removeServer( const char* psz_udn )
{ {
MediaServer* server = getServer( UDN ); MediaServer* p_server = getServer( psz_udn );
if ( !server ) return; if ( !p_server ) return;
msg_Dbg( _p_sd, msg_Dbg( _p_sd,
"Removing server '%s'", server->getFriendlyName() ); "Removing server '%s'", p_server->getFriendlyName() );
std::vector<MediaServer*>::iterator it; std::vector<MediaServer*>::iterator it;
for ( it = _list.begin(); it != _list.end(); it++ ) for ( it = _list.begin(); it != _list.end(); it++ )
{ {
if ( *it == server ) if ( *it == p_server )
{ {
_list.erase( it ); _list.erase( it );
delete server; delete p_server;
break; break;
} }
} }
...@@ -930,9 +930,9 @@ void MediaServerList::removeServer( const char* UDN ) ...@@ -930,9 +930,9 @@ void MediaServerList::removeServer( const char* UDN )
// Item... // Item...
Item::Item( Container* parent, const char* objectID, const char* title, const char* resource ) Item::Item( Container* p_parent, const char* objectID, const char* title, const char* resource )
{ {
_parent = parent; _parent = p_parent;
_objectID = objectID; _objectID = objectID;
_title = title; _title = title;
...@@ -982,11 +982,11 @@ input_item_t* Item::getInputItem() const ...@@ -982,11 +982,11 @@ input_item_t* Item::getInputItem() const
// Container... // Container...
Container::Container( Container* parent, Container::Container( Container* p_parent,
const char* objectID, const char* objectID,
const char* title ) const char* title )
{ {
_parent = parent; _parent = p_parent;
_objectID = objectID; _objectID = objectID;
_title = title; _title = title;
......
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