xbmc
UPnP.h
1 /*
2  * UPnP Support for XBMC
3  * Copyright (c) 2006 c0diq (Sylvain Rebaud)
4  * Portions Copyright (c) by the authors of libPlatinum
5  * http://www.plutinosoft.com/blog/category/platinum/
6  * Copyright (C) 2006-2018 Team Kodi
7  * This file is part of Kodi - https://kodi.tv
8  *
9  * SPDX-License-Identifier: GPL-2.0-or-later
10  * See LICENSES/README.md for more information.
11  */
12 
13 #pragma once
14 
15 #include "threads/CriticalSection.h"
16 
17 #include <string>
18 
19 class NPT_LogHandler;
20 class PLT_UPnP;
23 class PLT_MediaObject;
25 class CFileItem;
26 class CBookmark;
27 
28 namespace UPNP
29 {
30 
31 class CDeviceHostReferenceHolder;
32 class CCtrlPointReferenceHolder;
33 class CRendererReferenceHolder;
34 class CUPnPRenderer;
35 class CUPnPServer;
36 
37 class CUPnP
38 {
39 public:
40  CUPnP();
41  ~CUPnP();
42 
43  // server
44  bool StartServer();
45  void StopServer();
46 
47  // client
48  void StartClient();
49  void StopClient();
50  bool IsClientStarted() { return (m_MediaBrowser != NULL); }
51 
52  // controller
53  void StartController();
54  void StopController();
55  bool IsControllerStarted() { return (m_MediaController != NULL); }
56 
57  // renderer
58  bool StartRenderer();
59  void StopRenderer();
60  void UpdateState();
61 
62  // class methods
63  static CUPnP* GetInstance();
64  static CUPnPServer* GetServer();
65  static void ReleaseInstance(bool bWait);
66  static bool IsInstantiated() { return upnp != NULL; }
67 
68  static bool MarkWatched(const CFileItem& item,
69  const bool watched);
70 
71  static bool SaveFileState(const CFileItem& item,
72  const CBookmark& bookmark,
73  const bool updatePlayCount);
74  static bool UpdateItem(const std::string& path,
75  const CFileItem& item);
76 
77  static void RegisterUserdata(void* ptr);
78  static void UnregisterUserdata(void* ptr);
79 private:
80  CUPnP(const CUPnP&) = delete;
81  CUPnP& operator=(const CUPnP&) = delete;
82 
83  void CreateControlPoint();
84  void DestroyControlPoint();
85 
86  // methods
87  CUPnPRenderer* CreateRenderer(int port = 0);
88  CUPnPServer* CreateServer(int port = 0);
89 
90  CCriticalSection m_lockMediaBrowser;
91 
92  public:
93  PLT_SyncMediaBrowser* m_MediaBrowser;
94  PLT_MediaController* m_MediaController;
95 
96 private:
97  std::string m_IP;
98  PLT_UPnP* m_UPnP;
99  NPT_LogHandler* m_LogHandler;
100  CDeviceHostReferenceHolder* m_ServerHolder;
101  CRendererReferenceHolder* m_RendererHolder;
102  CCtrlPointReferenceHolder* m_CtrlPointHolder;
103 
104 
105  static CUPnP* upnp;
106 };
107 
108 } /* namespace UPNP */
Definition: UPnP.cpp:131
Definition: UPnP.cpp:140
Definition: UPnP.h:37
Definition: PltMediaController.h:243
The PLT_UPnP class maintains a list of devices (PLT_DeviceHost) to advertise and/or control points (P...
Definition: PltUPnP.h:68
Definition: Bookmark.h:14
Definition: NptLogging.h:70
Definition: PltMediaItem.h:187
Definition: UPnP.cpp:118
Definition: UPnPRenderer.h:26
Definition: UPnPServer.h:31
The PLT_MediaObject class is any data entity that can be returned by a ContentDirectory Service from ...
Definition: PltMediaItem.h:217
Definition: UPnPRenderer.h:20
Represents a file on a share.
Definition: FileItem.h:102
Definition: PltSyncMediaBrowser.h:90