kodi
UPnP.h
1 /*****************************************************************
2 |
3 | Platinum - Managed UPnP
4 |
5 | Copyright (c) 2004-2010, Plutinosoft, LLC.
6 | All rights reserved.
7 | http://www.plutinosoft.com
8 |
9 | This program is free software; you can redistribute it and/or
10 | modify it under the terms of the GNU General Public License
11 | as published by the Free Software Foundation; either version 2
12 | of the License, or (at your option) any later version.
13 |
14 | OEMs, ISVs, VARs and other distributors that combine and
15 | distribute commercially licensed software with Platinum software
16 | and do not wish to distribute the source code for the commercially
17 | licensed software under version 2, or (at your option) any later
18 | version, of the GNU General Public License (the "GPL") must enter
19 | into a commercial license agreement with Plutinosoft, LLC.
20 |
21 | This program is distributed in the hope that it will be useful,
22 | but WITHOUT ANY WARRANTY; without even the implied warranty of
23 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 | GNU General Public License for more details.
25 |
26 | You should have received a copy of the GNU General Public License
27 | along with this program; see the file LICENSE.txt. If not, write to
28 | the Free Software Foundation, Inc.,
29 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30 | http://www.gnu.org/licenses/gpl-2.0.html
31 |
32 ****************************************************************/
33 #pragma once
34 
35 namespace Platinum
36 {
37 
38 ref class ControlPoint;
39 ref class DeviceHost;
40 class NeptuneLoggingBridge;
41 
42 /*----------------------------------------------------------------------
43 | UPnP
44 +---------------------------------------------------------------------*/
45 public ref class UPnP
46 {
47 public:
48 
49  static const unsigned short DefaultPort = 1900;
50 
51 private:
52 
53  PLT_UPnP* m_pHandle;
54 
55 public:
56 
57  void Start()
58  {
59  Helpers::ThrowOnError(m_pHandle->Start());
60  }
61 
62  void Stop()
63  {
64  if (m_pHandle) m_pHandle->Stop();
65  }
66 
67  void AddControlPoint(ControlPoint^ cp);
68  void RemoveControlPoint(ControlPoint^ cp);
69 
70  void AddDeviceHost(DeviceHost^ host);
71  void RemoveDeviceHost(DeviceHost^ host);
72 
73  static List<String^>^ GetIpAddresses()
74  {
75  return GetIpAddresses(false);
76  }
77  static List<String^>^ GetIpAddresses(bool include_localhost);
78 
79  property bool Running
80  {
81  bool get()
82  {
83  return m_pHandle->IsRunning();
84  }
85  }
86 
87 public:
88 
89  virtual Boolean Equals(Object^ obj) override
90  {
91  if (obj == nullptr)
92  return false;
93 
94  if (!this->GetType()->IsInstanceOfType(obj))
95  return false;
96 
97  return (m_pHandle == ((UPnP^)obj)->m_pHandle);
98  }
99 
100 public:
101 
102  static UPnP();
103 
104  UPnP()
105  {
106  m_pHandle = new PLT_UPnP();
107  }
108 
109  ~UPnP()
110  {
111  // clean-up managed
112 
113  // clean-up unmanaged
114  this->!UPnP();
115  }
116 
117  !UPnP()
118  {
119  // clean-up unmanaged
120  if (m_pHandle != 0)
121  {
122  delete m_pHandle;
123 
124  m_pHandle = 0;
125  }
126  }
127 };
128 
129 
130 }
131 
The PLT_UPnP class maintains a list of devices (PLT_DeviceHost) to advertise and/or control points (P...
Definition: PltUPnP.h:68
Definition: UPnP.h:45
NPT_Result Start()
Start the UPnP context and all existing devices and control points associated with it...
Definition: PltUPnP.cpp:155
bool IsRunning()
Return the UPnP Engine state.
Definition: PltUPnP.h:117
Definition: ControlPoint.h:48
NPT_Result Stop()
Stop the UPnP context and all existing devices and control points associated with it...
Definition: PltUPnP.cpp:194
Definition: DeviceHost.h:43