LEFT | RIGHT |
(no file at all) | |
1 #include <Windows.h> | 1 #include <Windows.h> |
2 #include <Lmcons.h> | 2 #include <Lmcons.h> |
3 #include <Sddl.h> | 3 #include <Sddl.h> |
4 | 4 |
5 #include "Communication.h" | 5 #include "Communication.h" |
6 #include "Utils.h" | 6 #include "Utils.h" |
7 | 7 |
8 namespace | 8 namespace |
9 { | 9 { |
10 const int bufferSize = 1024; | 10 const int bufferSize = 1024; |
(...skipping 24 matching lines...) Expand all Loading... |
35 ReadBinary(currentType); | 35 ReadBinary(currentType); |
36 | 36 |
37 if (currentType != expectedType) | 37 if (currentType != expectedType) |
38 { | 38 { |
39 // Make sure we don't attempt to read the type again | 39 // Make sure we don't attempt to read the type again |
40 hasType = true; | 40 hasType = true; |
41 throw new std::runtime_error("Unexpected type found in input buffer"); | 41 throw new std::runtime_error("Unexpected type found in input buffer"); |
42 } | 42 } |
43 else | 43 else |
44 hasType = false; | 44 hasType = false; |
| 45 } |
| 46 |
| 47 Communication::ValueType Communication::InputBuffer::GetType() |
| 48 { |
| 49 if (!hasType) |
| 50 ReadBinary(currentType); |
| 51 |
| 52 hasType = true; |
| 53 return currentType; |
45 } | 54 } |
46 | 55 |
47 Communication::PipeConnectionError::PipeConnectionError() | 56 Communication::PipeConnectionError::PipeConnectionError() |
48 : std::runtime_error(AppendErrorCode("Unable to connect to a named pipe")) | 57 : std::runtime_error(AppendErrorCode("Unable to connect to a named pipe")) |
49 { | 58 { |
50 } | 59 } |
51 | 60 |
52 Communication::PipeBusyError::PipeBusyError() | 61 Communication::PipeBusyError::PipeBusyError() |
53 : std::runtime_error("Timeout while trying to connect to a named pipe, pipe is
busy") | 62 : std::runtime_error("Timeout while trying to connect to a named pipe, pipe is
busy") |
54 { | 63 { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 | 141 |
133 void Communication::Pipe::WriteMessage(Communication::OutputBuffer& message) | 142 void Communication::Pipe::WriteMessage(Communication::OutputBuffer& message) |
134 { | 143 { |
135 DWORD bytesWritten; | 144 DWORD bytesWritten; |
136 std::string data = message.Get(); | 145 std::string data = message.Get(); |
137 if (!data.length()) | 146 if (!data.length()) |
138 return; | 147 return; |
139 if (!WriteFile(pipe, data.c_str(), data.length(), &bytesWritten, 0)) | 148 if (!WriteFile(pipe, data.c_str(), data.length(), &bytesWritten, 0)) |
140 throw std::runtime_error("Failed to write to pipe"); | 149 throw std::runtime_error("Failed to write to pipe"); |
141 } | 150 } |
LEFT | RIGHT |