1 /*****************************************************************
2 |
3 | Platinum - Control Point Tasks
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 | licensing@plutinosoft.com
21 |
22 | This program is distributed in the hope that it will be useful,
23 | but WITHOUT ANY WARRANTY; without even the implied warranty of
24 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 | GNU General Public License for more details.
26 |
27 | You should have received a copy of the GNU General Public License
28 | along with this program; see the file LICENSE.txt. If not, write to
29 | the Free Software Foundation, Inc.,
30 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31 | http://www.gnu.org/licenses/gpl-2.0.html
32 |
33 ****************************************************************/
34
35 /*----------------------------------------------------------------------
36 | includes
37 +---------------------------------------------------------------------*/
38 #include "PltDeviceHost.h"
39 #include "PltCtrlPointTask.h"
40 #include "PltCtrlPoint.h"
41 #include "PltDatagramStream.h"
42
43 /*----------------------------------------------------------------------
44 | PLT_CtrlPointGetDescriptionTask::PLT_CtrlPointGetDescriptionTask
45 +---------------------------------------------------------------------*/
PLT_CtrlPointGetDescriptionTask(const NPT_HttpUrl & url,PLT_CtrlPoint * ctrl_point,NPT_TimeInterval leasetime,NPT_String uuid)46 PLT_CtrlPointGetDescriptionTask::PLT_CtrlPointGetDescriptionTask(const NPT_HttpUrl& url,
47 PLT_CtrlPoint* ctrl_point,
48 NPT_TimeInterval leasetime,
49 NPT_String uuid) :
50 PLT_HttpClientSocketTask(new NPT_HttpRequest(url, "GET", NPT_HTTP_PROTOCOL_1_1)),
51 m_CtrlPoint(ctrl_point),
52 m_LeaseTime(leasetime),
53 m_UUID(uuid)
54 {
55 }
56
57 /*----------------------------------------------------------------------
58 | PLT_CtrlPointGetDescriptionTask::~PLT_CtrlPointGetDescriptionTask
59 +---------------------------------------------------------------------*/
~PLT_CtrlPointGetDescriptionTask()60 PLT_CtrlPointGetDescriptionTask::~PLT_CtrlPointGetDescriptionTask()
61 {
62 }
63
64 /*----------------------------------------------------------------------
65 | PLT_CtrlPointGetDescriptionTask::ProcessResponse
66 +---------------------------------------------------------------------*/
67 NPT_Result
ProcessResponse(NPT_Result res,const NPT_HttpRequest & request,const NPT_HttpRequestContext & context,NPT_HttpResponse * response)68 PLT_CtrlPointGetDescriptionTask::ProcessResponse(NPT_Result res,
69 const NPT_HttpRequest& request,
70 const NPT_HttpRequestContext& context,
71 NPT_HttpResponse* response)
72 {
73 NPT_COMPILER_UNUSED(request);
74 return m_CtrlPoint->ProcessGetDescriptionResponse(
75 res,
76 request,
77 context,
78 response,
79 m_LeaseTime,
80 m_UUID);
81 }
82
83 /*----------------------------------------------------------------------
84 | PLT_CtrlPointGetSCPDsTask::PLT_CtrlPointGetSCPDsTask
85 +---------------------------------------------------------------------*/
PLT_CtrlPointGetSCPDsTask(PLT_CtrlPoint * ctrl_point,PLT_DeviceDataReference & root_device)86 PLT_CtrlPointGetSCPDsTask::PLT_CtrlPointGetSCPDsTask(PLT_CtrlPoint* ctrl_point,
87 PLT_DeviceDataReference& root_device) :
88 PLT_HttpClientSocketTask(),
89 m_CtrlPoint(ctrl_point),
90 m_RootDevice(root_device)
91 {
92 }
93
94 /*----------------------------------------------------------------------
95 | PLT_CtrlPointGetSCPDsTask::ProcessResponse
96 +---------------------------------------------------------------------*/
97 NPT_Result
ProcessResponse(NPT_Result res,const NPT_HttpRequest & request,const NPT_HttpRequestContext & context,NPT_HttpResponse * response)98 PLT_CtrlPointGetSCPDsTask::ProcessResponse(NPT_Result res,
99 const NPT_HttpRequest& request,
100 const NPT_HttpRequestContext& context,
101 NPT_HttpResponse* response)
102 {
103 NPT_COMPILER_UNUSED(context);
104 return m_CtrlPoint->ProcessGetSCPDResponse(
105 res,
106 request,
107 context,
108 response,
109 ((PLT_CtrlPointGetSCPDRequest&)request).m_Device);
110 }
111
112 /*----------------------------------------------------------------------
113 | PLT_CtrlPointInvokeActionTask::PLT_CtrlPointInvokeActionTask
114 +---------------------------------------------------------------------*/
PLT_CtrlPointInvokeActionTask(NPT_HttpRequest * request,PLT_CtrlPoint * ctrl_point,PLT_ActionReference & action,void * userdata)115 PLT_CtrlPointInvokeActionTask::PLT_CtrlPointInvokeActionTask(NPT_HttpRequest* request,
116 PLT_CtrlPoint* ctrl_point,
117 PLT_ActionReference& action,
118 void* userdata) :
119 PLT_HttpClientSocketTask(request),
120 m_CtrlPoint(ctrl_point),
121 m_Action(action),
122 m_Userdata(userdata)
123 {
124 }
125
126 /*----------------------------------------------------------------------
127 | PLT_CtrlPointInvokeActionTask::~PLT_CtrlPointInvokeActionTask
128 +---------------------------------------------------------------------*/
~PLT_CtrlPointInvokeActionTask()129 PLT_CtrlPointInvokeActionTask::~PLT_CtrlPointInvokeActionTask()
130 {
131 }
132
133 /*----------------------------------------------------------------------
134 | PLT_CtrlPointInvokeActionTask::ProcessResponse
135 +---------------------------------------------------------------------*/
136 NPT_Result
ProcessResponse(NPT_Result res,const NPT_HttpRequest & request,const NPT_HttpRequestContext & context,NPT_HttpResponse * response)137 PLT_CtrlPointInvokeActionTask::ProcessResponse(NPT_Result res,
138 const NPT_HttpRequest& request,
139 const NPT_HttpRequestContext& context,
140 NPT_HttpResponse* response)
141 {
142 NPT_COMPILER_UNUSED(request);
143 NPT_COMPILER_UNUSED(context);
144
145 return m_CtrlPoint->ProcessActionResponse(res, request, context, response, m_Action, m_Userdata);
146 }
147
148 /*----------------------------------------------------------------------
149 | PLT_CtrlPointHouseKeepingTask::PLT_CtrlPointHouseKeepingTask
150 +---------------------------------------------------------------------*/
PLT_CtrlPointHouseKeepingTask(PLT_CtrlPoint * ctrl_point,NPT_TimeInterval timer)151 PLT_CtrlPointHouseKeepingTask::PLT_CtrlPointHouseKeepingTask(PLT_CtrlPoint* ctrl_point,
152 NPT_TimeInterval timer) :
153 m_CtrlPoint(ctrl_point),
154 m_Timer(timer)
155 {
156 }
157
158 /*----------------------------------------------------------------------
159 | PLT_CtrlPointHouseKeepingTask::DoRun
160 +---------------------------------------------------------------------*/
161 void
DoRun()162 PLT_CtrlPointHouseKeepingTask::DoRun()
163 {
164 while (!IsAborting((NPT_Timeout)m_Timer.ToSeconds()*1000)) {
165 if (m_CtrlPoint) {
166 m_CtrlPoint->DoHouseKeeping();
167 }
168 }
169 }
170
171 /*----------------------------------------------------------------------
172 | PLT_CtrlPointSubscribeEventTask::PLT_CtrlPointSubscribeEventTask
173 +---------------------------------------------------------------------*/
PLT_CtrlPointSubscribeEventTask(NPT_HttpRequest * request,PLT_CtrlPoint * ctrl_point,PLT_DeviceDataReference & device,PLT_Service * service,void * userdata)174 PLT_CtrlPointSubscribeEventTask::PLT_CtrlPointSubscribeEventTask(NPT_HttpRequest* request,
175 PLT_CtrlPoint* ctrl_point,
176 PLT_DeviceDataReference &device,
177 PLT_Service* service,
178 void* userdata) :
179 PLT_HttpClientSocketTask(request),
180 m_CtrlPoint(ctrl_point),
181 m_Service(service),
182 m_Device(device),
183 m_Userdata(userdata)
184 {
185 }
186
187 /*----------------------------------------------------------------------
188 | PLT_CtrlPointSubscribeEventTask::~PLT_CtrlPointSubscribeEventTask
189 +---------------------------------------------------------------------*/
~PLT_CtrlPointSubscribeEventTask()190 PLT_CtrlPointSubscribeEventTask::~PLT_CtrlPointSubscribeEventTask()
191 {
192 }
193
194 /*----------------------------------------------------------------------
195 | PLT_CtrlPointSubscribeEventTask::ProcessResponse
196 +---------------------------------------------------------------------*/
197 NPT_Result
ProcessResponse(NPT_Result res,const NPT_HttpRequest & request,const NPT_HttpRequestContext & context,NPT_HttpResponse * response)198 PLT_CtrlPointSubscribeEventTask::ProcessResponse(NPT_Result res,
199 const NPT_HttpRequest& request,
200 const NPT_HttpRequestContext& context,
201 NPT_HttpResponse* response)
202 {
203 NPT_COMPILER_UNUSED(request);
204 NPT_COMPILER_UNUSED(context);
205
206 return m_CtrlPoint->ProcessSubscribeResponse(
207 res,
208 request,
209 context,
210 response,
211 m_Service,
212 m_Userdata);
213 }
214