-
-
Notifications
You must be signed in to change notification settings - Fork 876
Expand file tree
/
Copy pathHttp.h
More file actions
115 lines (101 loc) · 2.78 KB
/
Copy pathHttp.h
File metadata and controls
115 lines (101 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//-----------------------------------------------------------------------------
//
// Http.h
//
// Simple HTTP Client Interface to download updated config files
//
// Copyright (c) 2015 Justin Hammond <Justin@dynam.ac>
//
// SOFTWARE NOTICE AND LICENSE
//
// This file is part of OpenZWave.
//
// OpenZWave is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation, either version 3 of the License,
// or (at your option) any later version.
//
// OpenZWave is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
#ifndef _Http_H
#define _Http_H
#include "Defs.h"
#include "platform/Event.h"
#include "platform/Thread.h"
#include "platform/Mutex.h"
namespace OpenZWave
{
class Driver;
namespace Internal
{
/* This is a abstract class you can implement if you wish to override the built in HTTP Client
* Code in OZW with your own code.
*
* The built in Code uses threads to download updated files to a temporary file
* and then this class moves the files into the correct place.
*
*/
struct HttpDownload
{
string filename;
string url;
uint8 node;
enum DownloadType
{
None,
File,
Config,
MFSConfig
};
DownloadType operation;
enum Status
{
Ok,
Failed
};
Status transferStatus;
};
class i_HttpClient
{
public:
i_HttpClient(Driver *);
i_HttpClient();
virtual ~i_HttpClient()
{
}
;
virtual bool StartDownload(HttpDownload *transfer) = 0;
void FinishDownload(HttpDownload *transfer);
void SetDriver(Driver*);
private:
Driver* m_driver;
};
/* this is OZW's implementation of a Http Client. It uses threads to download Config Files in the background.
*
*/
class HttpClient: public i_HttpClient
{
public:
HttpClient(Driver *);
~HttpClient();
bool StartDownload(HttpDownload *transfer);
private:
static void HttpThreadProc(Internal::Platform::Event* _exitEvent, void* _context);
//Driver* m_driver;
Internal::Platform::Event* m_exitEvent;
Internal::Platform::Thread* m_httpThread;
bool m_httpThreadRunning;
Internal::Platform::Mutex* m_httpMutex;
list<HttpDownload *> m_httpDownlist;
Internal::Platform::Event* m_httpDownloadEvent;
};
} // namespace Internal
} /* namespace OpenZWave */
#endif