dLeyna-server is a high level media content API that allows client applications to discover, browse, and search UPNP and DLNA media servers. dLeyna-server is a service implemented on top of the GUPnP libraries. It is designed to be used by media applications, such as Digital Media Players (DMPs) or Digital Media Controllers (DMCs). dLeyna-server offers such applications a number of benefits.
- It provides a language and toolkit neutral APIs.
- It exposes high level APIs that are specifically designed for exploring media servers.
- It reduces network traffic by communicating with Digital Media Servers (DMSs) on behalf of its clients. This means that the device on which dLeyna-server runs, downloads, and parses a DMS's device and service description files only once, regardless of the number of media applications making use of its services.
The code for dLeyna-server is hosted on GitHub at https://github.com/01org/dleyna-server. Instructions for compiling and installing the code can be found in the README file.
dLeyna-server is a service rather than a library and the APIs it exposes are invoked via IPC rather than function calls. dLeyna-server itself is not bound to a particular IPC mechanism and its flexible architecture permits the use of different IPC mechanisms via dynamically loaded modules called connectors. Currently, only one such module exists, dLeyna-connector-dbus. When used in connection with dLeyna-connector-dbus, dLeyna-server acts as a d-Bus server. The rest of this document will describe dLeyna-server's d-Bus APIs. From here on, this document uses the term dLeyna-server to refer to the dLeyna-server/dLeyna-connector-dus combination.
dLeyna-server can be launched by d-Bus activation when needed. It automatically shuts down when the last of its clients quits or releases its connection. dLeyna-server currently connects to the d-Bus session bus, although this may change in the future. It exposes four different types of objects:
- A manager object: There is only ever a single instance of this object. It can be used to retrieve a list of the DMSs on the local area network. It is also used to perform certain server independent tasks.
- Server objects: One separate object is exposed for each DMS available on the LAN. These objects expose interfaces that allow clients to retrieve information about the servers and to browse and search their contents.
- Container objects: Container objects represent separate folders within the DMS. They allow clients to browse and search the contents of the folder to which they correspond.
- Item objects: Represent individual pieces of media content published by a DMS. These objects can be used to retrieve information about media objects, such as their name, their authors, and most importantly, their URLs.