Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/shared/Communication.h

Issue 11013110: Cleanup (Closed)
Patch Set: Whole cleanup + comments addressed Created July 23, 2013, 11:34 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
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 15
16 enum ProcType : uint32_t { 16 enum ProcType : uint32_t {
17 PROC_MATCHES, 17 PROC_MATCHES,
18 PROC_GET_ELEMHIDE_SELECTORS, 18 PROC_GET_ELEMHIDE_SELECTORS,
19 PROC_AVAILABLE_SUBSCRIPTIONS, 19 PROC_AVAILABLE_SUBSCRIPTIONS,
20 PROC_LISTED_SUBSCRIPTIONS, 20 PROC_LISTED_SUBSCRIPTIONS,
21 PROC_SET_SUBSCRIPTION, 21 PROC_SET_SUBSCRIPTION,
22 PROC_UPDATE_ALL_SUBSCRIPTIONS, 22 PROC_UPDATE_ALL_SUBSCRIPTIONS,
23 PROC_GET_EXCEPTION_DOMAINS, 23 PROC_GET_EXCEPTION_DOMAINS,
24 PROC_IS_WHITELISTED_URL, 24 PROC_IS_WHITELISTED_URL,
25 PROC_ADD_FILTER, 25 PROC_ADD_FILTER,
26 PROC_REMOVE_FILTER, 26 PROC_REMOVE_FILTER,
27 PROC_SET_PREF,
28 PROC_GET_PREF
27 }; 29 };
28 enum ValueType : uint32_t { 30 enum ValueType : uint32_t {
29 TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL 31 TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL
30 }; 32 };
31 typedef uint32_t SizeType; 33 typedef uint32_t SizeType;
32 34
33 class InputBuffer 35 class InputBuffer
34 { 36 {
35 public: 37 public:
36 InputBuffer(const std::string& data) : buffer(data), hasType(false) {} 38 InputBuffer(const std::string& data) : buffer(data), hasType(false) {}
37 InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); } 39 InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); }
38 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); } 40 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); }
39 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); } 41 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); }
40 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); } 42 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); }
41 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); } 43 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); }
42 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); } 44 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); }
45 ValueType GetType();
43 private: 46 private:
44 std::istringstream buffer; 47 std::istringstream buffer;
45 ValueType currentType; 48 ValueType currentType;
46 bool hasType; 49 bool hasType;
47 50
48 void CheckType(ValueType expectedType); 51 void CheckType(ValueType expectedType);
49 52
50 template<class T> 53 template<class T>
51 InputBuffer& ReadString(T& value, ValueType expectedType) 54 InputBuffer& ReadString(T& value, ValueType expectedType)
52 { 55 {
(...skipping 18 matching lines...) Expand all
71 ReadBinary(value); 74 ReadBinary(value);
72 return *this; 75 return *this;
73 } 76 }
74 77
75 template<class T> 78 template<class T>
76 void ReadBinary(T& value) 79 void ReadBinary(T& value)
77 { 80 {
78 buffer.read(reinterpret_cast<char*>(&value), sizeof(T)); 81 buffer.read(reinterpret_cast<char*>(&value), sizeof(T));
79 if (buffer.fail()) 82 if (buffer.fail())
80 throw new std::runtime_error("Unexpected end of input buffer"); 83 throw new std::runtime_error("Unexpected end of input buffer");
84 hasType = false;
81 } 85 }
82 }; 86 };
83 87
84 class OutputBuffer 88 class OutputBuffer
85 { 89 {
86 public: 90 public:
87 OutputBuffer() {} 91 OutputBuffer() {}
88 92
89 // Explicit copy constructor to allow returning OutputBuffer by value 93 // Explicit copy constructor to allow returning OutputBuffer by value
90 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {} 94 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {}
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 163
160 InputBuffer ReadMessage(); 164 InputBuffer ReadMessage();
161 void WriteMessage(OutputBuffer& message); 165 void WriteMessage(OutputBuffer& message);
162 166
163 protected: 167 protected:
164 HANDLE pipe; 168 HANDLE pipe;
165 }; 169 };
166 } 170 }
167 171
168 #endif 172 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld