MPD: ContentDirectoryService Class Reference

MPD 0.20.15

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

  objectId | the 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] | result | an 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

  objectId | the 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

  objectId | the UPnP object Id under which the search should be done. Not all servers actually support this below root. Root has Id "0"
  searchstring | an 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:

- lib/upnp/ContentDirectoryService.hxx