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

Delta Between Two Patch Sets: src/shared/Communication.h

Issue 11043057: First run page triggering (Closed)
Left Patch Set: Created July 11, 2013, 9:49 a.m.
Right Patch Set: Minor refactoring. Renaming and a small cleanup. Created July 26, 2013, 12:05 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « src/plugin/PluginUtil.cpp ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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, 27 PROC_SET_PREF,
28 PROC_GET_PREF, 28 PROC_GET_PREF,
29 PROC_GET_IS_FIRST_RUN 29 PROC_IS_FIRST_RUN_ACTION_NEEDED
30 }; 30 };
31 enum ValueType : uint32_t { 31 enum ValueType : uint32_t {
32 TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL 32 TYPE_PROC, TYPE_STRING, TYPE_WSTRING, TYPE_INT64, TYPE_INT32, TYPE_BOOL
33 }; 33 };
34 typedef uint32_t SizeType; 34 typedef uint32_t SizeType;
35 35
36 class InputBuffer 36 class InputBuffer
37 { 37 {
38 public: 38 public:
39 InputBuffer() : buffer(), hasType(false) {}
39 InputBuffer(const std::string& data) : buffer(data), hasType(false) {} 40 InputBuffer(const std::string& data) : buffer(data), hasType(false) {}
41 InputBuffer(const InputBuffer& copy) { hasType = copy.hasType; buffer = std: :istringstream(copy.buffer.str()); currentType = copy.currentType; }
40 InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); } 42 InputBuffer& operator>>(ProcType& value) { return Read(value, TYPE_PROC); }
41 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); } 43 InputBuffer& operator>>(std::string& value) { return ReadString(value, TYPE_ STRING); }
42 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); } 44 InputBuffer& operator>>(std::wstring& value) { return ReadString(value, TYPE _WSTRING); }
43 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); } 45 InputBuffer& operator>>(int64_t& value) { return Read(value, TYPE_INT64); }
44 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); } 46 InputBuffer& operator>>(int32_t& value) { return Read(value, TYPE_INT32); }
45 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); } 47 InputBuffer& operator>>(bool& value) { return Read(value, TYPE_BOOL); }
48 InputBuffer& operator=(const InputBuffer& copy) { hasType = copy.hasType; bu ffer = std::istringstream(copy.buffer.str());
49 currentType = copy.current Type; return *this; }
50 ValueType GetType();
46 private: 51 private:
47 std::istringstream buffer; 52 std::istringstream buffer;
48 ValueType currentType; 53 ValueType currentType;
49 bool hasType; 54 bool hasType;
50 55
51 void CheckType(ValueType expectedType); 56 void CheckType(ValueType expectedType);
52 57
53 template<class T> 58 template<class T>
54 InputBuffer& ReadString(T& value, ValueType expectedType) 59 InputBuffer& ReadString(T& value, ValueType expectedType)
55 { 60 {
(...skipping 18 matching lines...) Expand all
74 ReadBinary(value); 79 ReadBinary(value);
75 return *this; 80 return *this;
76 } 81 }
77 82
78 template<class T> 83 template<class T>
79 void ReadBinary(T& value) 84 void ReadBinary(T& value)
80 { 85 {
81 buffer.read(reinterpret_cast<char*>(&value), sizeof(T)); 86 buffer.read(reinterpret_cast<char*>(&value), sizeof(T));
82 if (buffer.fail()) 87 if (buffer.fail())
83 throw new std::runtime_error("Unexpected end of input buffer"); 88 throw new std::runtime_error("Unexpected end of input buffer");
89 hasType = false;
84 } 90 }
85 }; 91 };
86 92
87 class OutputBuffer 93 class OutputBuffer
88 { 94 {
89 public: 95 public:
90 OutputBuffer() {} 96 OutputBuffer() {}
91 97
92 // Explicit copy constructor to allow returning OutputBuffer by value 98 // Explicit copy constructor to allow returning OutputBuffer by value
93 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {} 99 OutputBuffer(const OutputBuffer& copy) : buffer(copy.buffer.str()) {}
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 168
163 InputBuffer ReadMessage(); 169 InputBuffer ReadMessage();
164 void WriteMessage(OutputBuffer& message); 170 void WriteMessage(OutputBuffer& message);
165 171
166 protected: 172 protected:
167 HANDLE pipe; 173 HANDLE pipe;
168 }; 174 };
169 } 175 }
170 176
171 #endif 177 #endif
LEFTRIGHT

Powered by Google App Engine
This is Rietveld