39 #ifndef _PLT_SYNC_MEDIA_BROWSER_
40 #define _PLT_SYNC_MEDIA_BROWSER_
53 typedef NPT_Map<NPT_String, PLT_DeviceDataReference> PLT_DeviceMap;
54 typedef NPT_Map<NPT_String, PLT_DeviceDataReference>::Entry PLT_DeviceMapEntry;
56 typedef struct PLT_BrowseData {
57 NPT_SharedVariable shared_var;
62 typedef NPT_Reference<PLT_BrowseData> PLT_BrowseDataReference;
67 class PLT_MediaContainerChangesListener
70 virtual ~PLT_MediaContainerChangesListener() {}
71 virtual void OnContainerChanged(PLT_DeviceDataReference& device,
73 const char* update_id) = 0;
83 PLT_SyncMediaBrowser(PLT_CtrlPointReference& ctrlPoint,
84 bool use_cache =
false,
85 PLT_MediaContainerChangesListener* listener = NULL);
86 virtual ~PLT_SyncMediaBrowser();
89 virtual NPT_Result OnDeviceAdded(PLT_DeviceDataReference& device);
90 virtual NPT_Result OnDeviceRemoved(PLT_DeviceDataReference& device);
93 virtual void OnMSStateVariablesChanged(
PLT_Service* service,
94 NPT_List<PLT_StateVariable*>* vars);
95 virtual void OnBrowseResult(NPT_Result res,
96 PLT_DeviceDataReference& device,
101 void SetContainerListener(PLT_MediaContainerChangesListener* listener) {
102 m_ContainerListener = listener;
104 NPT_Result BrowseSync(PLT_DeviceDataReference& device,
106 PLT_MediaObjectListReference& list,
107 bool metadata =
false,
109 NPT_Cardinal max_results = 0);
111 const NPT_Lock<PLT_DeviceMap>& GetMediaServersMap()
const {
return m_MediaServers; }
112 bool IsCached(
const char* uuid,
const char* object_id);
115 NPT_Result BrowseSync(PLT_BrowseDataReference& browse_data,
116 PLT_DeviceDataReference& device,
117 const char* object_id,
120 bool browse_metadata =
false,
121 const char* filter =
"dc:date,upnp:genre,res,res@duration,res@size,upnp:albumArtURI,upnp:album,upnp:artist,upnp:author,searchable,childCount",
122 const char* sort =
"");
124 NPT_Result Find(
const char* ip, PLT_DeviceDataReference& device);
125 NPT_Result WaitForResponse(NPT_SharedVariable& shared_var);
128 NPT_Lock<PLT_DeviceMap> m_MediaServers;
129 PLT_MediaContainerChangesListener* m_ContainerListener;
137 class PLT_DeviceMapFinderByIp
141 PLT_DeviceMapFinderByIp(
const char* ip) : m_IP(ip) {}
143 bool operator()(
const PLT_DeviceMapEntry*
const& entry)
const {
144 const PLT_DeviceDataReference& device = entry->GetValue();
145 return (device->GetURLBase().GetHost() == m_IP);
156 class PLT_DeviceMapFinderByUUID
160 PLT_DeviceMapFinderByUUID(
const char* uuid) : m_UUID(uuid) {}
162 bool operator()(
const PLT_DeviceMapEntry*
const& entry)
const {
163 PLT_DeviceDataReference device = entry->GetValue();
164 return device->GetUUID() == m_UUID;
UPnP Service.
Definition: PltService.h:67
The PLT_BrowseInfo struct is used to marshall Browse or Search action response results across differe...
Definition: PltMediaBrowser.h:55