MPD  0.20.18
Public Member Functions
ContentDirectoryService Class Reference

Content Directory Service class. More...

#include <ContentDirectoryService.hxx>

Public Member Functions

 ContentDirectoryService (const UPnPDevice &device, const UPnPService &service)
 Construct by copying data from device and service objects. More...
 
 ContentDirectoryService ()=default
 An empty one. More...
 
 ~ContentDirectoryService ()
 
UPnPDirContent readDir (UpnpClient_Handle handle, const char *objectId) const
 Read a container's children list into dirbuf. More...
 
void readDirSlice (UpnpClient_Handle handle, const char *objectId, unsigned offset, unsigned count, UPnPDirContent &dirbuf, unsigned &didread, unsigned &total) const
 
UPnPDirContent search (UpnpClient_Handle handle, const char *objectId, const char *searchstring) const
 Search the content directory service. More...
 
UPnPDirContent getMetadata (UpnpClient_Handle handle, const char *objectId) const
 Read metadata for a given node. More...
 
std::list< std::string > getSearchCapabilities (UpnpClient_Handle handle) const
 Retrieve search capabilities. More...
 
gcc_pure std::string GetURI () const noexcept
 
const char * getFriendlyName () const noexcept
 Retrieve the "friendly name" for this server, useful for display. More...
 

Detailed Description

Content Directory Service class.

This stores identity data from a directory service and the device it belongs to, and has methods to query the directory, using libupnp for handling the UPnP protocols.

Note: m_rdreqcnt: number of entries requested per directory read. 0 means all entries. The device can still return less entries than requested, depending on its own limits. In general it's not optimal becauses it triggers issues, and is sometimes actually slower, e.g. on a D-Link NAS 327

The value chosen may affect by the UpnpSetMaxContentLength (2000*1024) done during initialization, but this should be ample

Definition at line 50 of file ContentDirectoryService.hxx.

Constructor & Destructor Documentation

◆ ContentDirectoryService() [1/2]

ContentDirectoryService::ContentDirectoryService ( const UPnPDevice device,
const UPnPService service 
)

Construct by copying data from device and service objects.

The discovery service does this: use UPnPDeviceDirectory::GetDirectories()

◆ ContentDirectoryService() [2/2]

ContentDirectoryService::ContentDirectoryService ( )
default

An empty one.

◆ ~ContentDirectoryService()

ContentDirectoryService::~ContentDirectoryService ( )

Member Function Documentation

◆ getFriendlyName()

const char* ContentDirectoryService::getFriendlyName ( ) const
inlinenoexcept

Retrieve the "friendly name" for this server, useful for display.

Definition at line 122 of file ContentDirectoryService.hxx.

◆ getMetadata()

UPnPDirContent ContentDirectoryService::getMetadata ( UpnpClient_Handle  handle,
const char *  objectId 
) const

Read metadata for a given node.

Parameters
objectIdthe UPnP object Id. Root has Id "0"

◆ getSearchCapabilities()

std::list<std::string> ContentDirectoryService::getSearchCapabilities ( UpnpClient_Handle  handle) const

Retrieve search capabilities.

Throws std::runtime_error on error.

Parameters
[out]resultan empty vector: no search, or a single '*' element: any tag can be used in a search, or a list of usable tag names.

◆ GetURI()

gcc_pure std::string ContentDirectoryService::GetURI ( ) const
inlinenoexcept

Definition at line 117 of file ContentDirectoryService.hxx.

◆ readDir()

UPnPDirContent ContentDirectoryService::readDir ( UpnpClient_Handle  handle,
const char *  objectId 
) const

Read a container's children list into dirbuf.

Parameters
objectIdthe UPnP object Id for the container. Root has Id "0"

◆ readDirSlice()

void ContentDirectoryService::readDirSlice ( UpnpClient_Handle  handle,
const char *  objectId,
unsigned  offset,
unsigned  count,
UPnPDirContent dirbuf,
unsigned &  didread,
unsigned &  total 
) const

◆ search()

UPnPDirContent ContentDirectoryService::search ( UpnpClient_Handle  handle,
const char *  objectId,
const char *  searchstring 
) const

Search the content directory service.

Parameters
objectIdthe UPnP object Id under which the search should be done. Not all servers actually support this below root. Root has Id "0"
searchstringan UPnP searchcriteria string. Check the UPnP document: UPnP-av-ContentDirectory-v1-Service-20020625.pdf section 2.5.5. Maybe we'll provide an easier way some day...

The documentation for this class was generated from the following file: