Left: | ||
Right: |
OLD | NEW |
---|---|
1 #ifndef COMMUNICATION_H | 1 #ifndef COMMUNICATION_H |
2 #define COMMUNICATION_H | 2 #define COMMUNICATION_H |
3 | 3 |
4 #include <memory> | 4 #include <memory> |
5 #include <sstream> | 5 #include <sstream> |
6 #include <stdexcept> | 6 #include <stdexcept> |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 #include <Windows.h> | 10 #include <Windows.h> |
11 | 11 |
12 namespace Communication | 12 namespace Communication |
13 { | 13 { |
14 extern const std::wstring pipeName; | 14 extern const std::wstring pipeName; |
15 const int bufferSize = 1024; | 15 const int bufferSize = 1024; |
16 | 16 |
17 enum {TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL}; | 17 enum ProcType : uint32_t { |
Felix Dahlke
2013/06/04 06:47:32
I can't find anything about this, but I think you
Wladimir Palant
2013/06/04 09:26:13
It is a standard feature, see http://en.wikipedia.
Felix Dahlke
2013/06/04 11:55:21
Didn't know it's a new standard feature, in this c
| |
18 typedef int32_t ValueType; | 18 PROC_MATCHES, |
19 PROC_GET_ELEMHIDE_SELECTORS, | |
20 PROC_AVAILABLE_SUBSCRIPTIONS, | |
21 PROC_LISTED_SUBSCRIPTIONS, | |
22 PROC_SET_SUBSCRIPTION, | |
23 PROC_UPDATE_ALL_SUBSCRIPTIONS, | |
24 PROC_GET_EXCEPTION_DOMAINS, | |
25 PROC_ADD_FILTER, | |
26 }; | |
27 enum ValueType : uint32_t { | |
28 TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL | |
29 }; | |
19 typedef uint32_t SizeType; | 30 typedef uint32_t SizeType; |
20 | 31 |
21 class InputBuffer | 32 class InputBuffer |
22 { | 33 { |
23 public: | 34 public: |
24 InputBuffer(const std::string& data) : buffer(data), hasType(false) {} | 35 InputBuffer(const std::string& data) : buffer(data), hasType(false) {} |
36 InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); } | |
25 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); } | 37 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); } |
26 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); } | 38 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); } |
27 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); } | 39 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); } |
28 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); } | 40 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); } |
29 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); } | 41 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); } |
30 private: | 42 private: |
31 std::istringstream buffer; | 43 std::istringstream buffer; |
32 ValueType currentType; | 44 ValueType currentType; |
33 bool hasType; | 45 bool hasType; |
34 | 46 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
86 public: | 98 public: |
87 OutputBuffer() {} | 99 OutputBuffer() {} |
88 | 100 |
89 // Explicit copy constructor to allow returning OutputBuffer by value | 101 // Explicit copy constructor to allow returning OutputBuffer by value |
90 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {} | 102 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {} |
91 | 103 |
92 std::string Get() | 104 std::string Get() |
93 { | 105 { |
94 return buffer.str(); | 106 return buffer.str(); |
95 } | 107 } |
108 OutputBuffer& operator<<(ProcType value) { return Write(value, TYPE_PROC); } | |
96 OutputBuffer& operator<<(const std::string& value) { return WriteString(valu e, TYPE_STRING); } | 109 OutputBuffer& operator<<(const std::string& value) { return WriteString(valu e, TYPE_STRING); } |
97 OutputBuffer& operator<<(const std::wstring& value) { return WriteString(val ue, TYPE_WSTRING); } | 110 OutputBuffer& operator<<(const std::wstring& value) { return WriteString(val ue, TYPE_WSTRING); } |
98 OutputBuffer& operator<<(int64_t value) { return Write(value, TYPE_INT64); } | 111 OutputBuffer& operator<<(int64_t value) { return Write(value, TYPE_INT64); } |
99 OutputBuffer& operator<<(int32_t value) { return Write(value, TYPE_INT32); } | 112 OutputBuffer& operator<<(int32_t value) { return Write(value, TYPE_INT32); } |
100 OutputBuffer& operator<<(bool value) { return Write(value, TYPE_BOOL); } | 113 OutputBuffer& operator<<(bool value) { return Write(value, TYPE_BOOL); } |
101 private: | 114 private: |
102 std::ostringstream buffer; | 115 std::ostringstream buffer; |
103 | 116 |
104 // Disallow copying | 117 // Disallow copying |
105 const OutputBuffer& operator=(const OutputBuffer&); | 118 const OutputBuffer& operator=(const OutputBuffer&); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
152 | 165 |
153 InputBuffer ReadMessage(); | 166 InputBuffer ReadMessage(); |
154 void WriteMessage(OutputBuffer& message); | 167 void WriteMessage(OutputBuffer& message); |
155 | 168 |
156 protected: | 169 protected: |
157 HANDLE pipe; | 170 HANDLE pipe; |
158 }; | 171 }; |
159 } | 172 } |
160 | 173 |
161 #endif | 174 #endif |
OLD | NEW |