0
|
1 /**
|
|
2 * Palantir - A Lightweight, RESTful DICOM Store
|
|
3 * Copyright (C) 2012 Medical Physics Department, CHU of Liege,
|
|
4 * Belgium
|
|
5 *
|
|
6 * This program is free software: you can redistribute it and/or
|
|
7 * modify it under the terms of the GNU General Public License as
|
|
8 * published by the Free Software Foundation, either version 3 of the
|
|
9 * License, or (at your option) any later version.
|
|
10 *
|
|
11 * This program is distributed in the hope that it will be useful, but
|
|
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
14 * General Public License for more details.
|
|
15 *
|
|
16 * You should have received a copy of the GNU General Public License
|
|
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
18 **/
|
|
19
|
|
20
|
|
21 #pragma once
|
|
22
|
|
23 #include "HttpHandler.h"
|
|
24
|
|
25 #include <list>
|
23
|
26 #include <map>
|
0
|
27 #include <stdint.h>
|
|
28 #include <boost/shared_ptr.hpp>
|
|
29
|
|
30 namespace Palantir
|
|
31 {
|
|
32 class ChunkStore;
|
|
33
|
|
34 class MongooseServer
|
|
35 {
|
|
36 private:
|
|
37 // http://stackoverflow.com/questions/311166/stdauto-ptr-or-boostshared-ptr-for-pimpl-idiom
|
|
38 struct PImpl;
|
|
39 boost::shared_ptr<PImpl> pimpl_;
|
|
40
|
|
41 typedef std::list<HttpHandler*> Handlers;
|
|
42 Handlers handlers_;
|
|
43
|
23
|
44 typedef std::map<std::string, std::string> RegisteredUsers;
|
|
45 RegisteredUsers registeredUsers_;
|
|
46
|
|
47 bool ssl_;
|
|
48 std::string certificate_;
|
0
|
49 uint16_t port_;
|
|
50
|
|
51 bool IsRunning() const;
|
|
52
|
|
53 public:
|
|
54 MongooseServer();
|
|
55
|
|
56 ~MongooseServer();
|
|
57
|
|
58 void SetPort(uint16_t port);
|
|
59
|
|
60 uint16_t GetPort() const
|
|
61 {
|
|
62 return port_;
|
|
63 }
|
|
64
|
|
65 void Start();
|
|
66
|
|
67 void Stop();
|
|
68
|
23
|
69 void RegisterUser(const char* username,
|
|
70 const char* password);
|
|
71
|
0
|
72 void RegisterHandler(HttpHandler* handler); // This takes the ownership
|
|
73
|
23
|
74 bool IsSslEnabled() const
|
|
75 {
|
|
76 return ssl_;
|
|
77 }
|
|
78
|
|
79 void SetSslEnabled(bool enabled);
|
|
80
|
|
81 const std::string& GetSslCertificate() const
|
|
82 {
|
|
83 return certificate_;
|
|
84 }
|
|
85
|
|
86 void SetSslCertificate(const char* path);
|
|
87
|
0
|
88 void ClearHandlers();
|
|
89
|
|
90 // Can return NULL if no handler is associated to this URI
|
|
91 HttpHandler* FindHandler(const UriComponents& forUri) const;
|
|
92
|
|
93 ChunkStore& GetChunkStore();
|
|
94 };
|
|
95 }
|