OLD | NEW |
1 #include PRECOMPILED_HEADER_FILE | 1 #include PRECOMPILED_HEADER_FILE |
2 | 2 |
3 #include <Lmcons.h> | 3 #include <Lmcons.h> |
4 #include <sstream> | 4 #include <sstream> |
5 | 5 |
6 #include "Communication.h" | 6 #include "Communication.h" |
7 | 7 |
8 namespace | 8 namespace |
9 { | 9 { |
10 std::wstring GetUserName() | 10 std::wstring GetUserName() |
(...skipping 11 matching lines...) Expand all Loading... |
22 } | 22 } |
23 } | 23 } |
24 | 24 |
25 const std::wstring Communication::pipeName = L"\\\\.\\pipe\\adblockplusengine_"
+ GetUserName(); | 25 const std::wstring Communication::pipeName = L"\\\\.\\pipe\\adblockplusengine_"
+ GetUserName(); |
26 | 26 |
27 std::string Communication::MarshalStrings(const std::vector<std::string>& string
s) | 27 std::string Communication::MarshalStrings(const std::vector<std::string>& string
s) |
28 { | 28 { |
29 // TODO: This is some pretty hacky marshalling, replace it with something more
robust | 29 // TODO: This is some pretty hacky marshalling, replace it with something more
robust |
30 std::string marshalledStrings; | 30 std::string marshalledStrings; |
31 for (std::vector<std::string>::const_iterator it = strings.begin(); it != stri
ngs.end(); it++) | 31 for (std::vector<std::string>::const_iterator it = strings.begin(); it != stri
ngs.end(); it++) |
32 marshalledStrings += *it + ';'; | 32 marshalledStrings += *it + '\0'; |
33 return marshalledStrings; | 33 return marshalledStrings; |
34 } | 34 } |
35 | 35 |
36 std::vector<std::string> Communication::UnmarshalStrings(const std::string& mess
age) | 36 std::vector<std::string> Communication::UnmarshalStrings(const std::string& mess
age) |
37 { | 37 { |
38 std::stringstream stream(message); | 38 std::stringstream stream(message); |
39 std::vector<std::string> strings; | 39 std::vector<std::string> strings; |
40 std::string string; | 40 std::string string; |
41 while (std::getline(stream, string, ';')) | 41 while (std::getline(stream, string, '\0')) |
42 strings.push_back(string); | 42 strings.push_back(string); |
43 return strings; | 43 return strings; |
44 } | 44 } |
45 | 45 |
46 std::string Communication::ReadMessage(HANDLE pipe) | 46 std::string Communication::ReadMessage(HANDLE pipe) |
47 { | 47 { |
48 std::stringstream stream; | 48 std::stringstream stream; |
49 std::auto_ptr<char> buffer(new char[bufferSize]); | 49 std::auto_ptr<char> buffer(new char[bufferSize]); |
50 bool doneReading = false; | 50 bool doneReading = false; |
51 while (!doneReading) | 51 while (!doneReading) |
(...skipping 11 matching lines...) Expand all Loading... |
63 } | 63 } |
64 return stream.str(); | 64 return stream.str(); |
65 } | 65 } |
66 | 66 |
67 void Communication::WriteMessage(HANDLE pipe, const std::string& message) | 67 void Communication::WriteMessage(HANDLE pipe, const std::string& message) |
68 { | 68 { |
69 DWORD bytesWritten; | 69 DWORD bytesWritten; |
70 if (!WriteFile(pipe, message.c_str(), message.length(), &bytesWritten, 0)) | 70 if (!WriteFile(pipe, message.c_str(), message.length(), &bytesWritten, 0)) |
71 throw std::runtime_error("Failed to write to pipe"); | 71 throw std::runtime_error("Failed to write to pipe"); |
72 } | 72 } |
OLD | NEW |