| 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 |