| Index: src/engine/main.cpp |
| =================================================================== |
| --- a/src/engine/main.cpp |
| +++ b/src/engine/main.cpp |
| @@ -1,35 +1,19 @@ |
| #include "stdafx.h" |
| #include "../shared/AutoHandle.h" |
| #include "../shared/Communication.h" |
| +#include "Debug.h" |
| +#include "Utils.h" |
| namespace |
| { |
| std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; |
| - void Log(const std::string& message) |
| - { |
| - // TODO: Log to a log file |
| - MessageBoxA(0, ("AdblockPlusEngine: " + message).c_str(), "", MB_OK); |
| - } |
| - |
| - void LogLastError(const std::string& message) |
| - { |
| - std::stringstream stream; |
| - stream << message << " (Error code: " << GetLastError() << ")"; |
| - Log(stream.str()); |
| - } |
| - |
| - void LogException(const std::exception& exception) |
| - { |
| - Log(std::string("An exception occurred: ") + exception.what()); |
| - } |
| - |
| std::string ToUtf8String(std::wstring str) |
| { |
| size_t length = str.size(); |
| if (length == 0) |
| return std::string(); |
| DWORD utf8StringLength = WideCharToMultiByte(CP_UTF8, 0, str.c_str(), length, 0, 0, 0, 0); |
| if (utf8StringLength == 0) |
| @@ -152,53 +136,23 @@ namespace |
| try |
| { |
| Communication::InputBuffer message = pipe->ReadMessage(); |
| Communication::OutputBuffer response = HandleRequest(message); |
| pipe->WriteMessage(response); |
| } |
| catch (const std::exception& e) |
| { |
| - LogException(e); |
| + DebugException(e); |
| } |
| // TODO: Keep the pipe open until the client disconnects |
| return 0; |
| } |
| - |
| - bool IsWindowsVistaOrLater() |
| - { |
| - OSVERSIONINFOEX osvi; |
| - ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); |
| - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); |
| - GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osvi)); |
| - return osvi.dwMajorVersion >= 6; |
| - } |
| -} |
| - |
| -std::wstring GetAppDataPath() |
| -{ |
| - std::wstring appDataPath; |
| - if (IsWindowsVistaOrLater()) |
| - { |
| - WCHAR* pathBuffer; |
| - if (FAILED(SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 0, &pathBuffer))) |
| - throw std::runtime_error("Unable to find app data directory"); |
| - appDataPath.assign(pathBuffer); |
| - CoTaskMemFree(pathBuffer); |
| - } |
| - else |
| - { |
| - std::auto_ptr<wchar_t> pathBuffer(new wchar_t[MAX_PATH]); |
| - if (!SHGetSpecialFolderPath(0, pathBuffer.get(), CSIDL_LOCAL_APPDATA, true)) |
| - throw std::runtime_error("Unable to find app data directory"); |
| - appDataPath.assign(pathBuffer.get()); |
| - } |
| - return appDataPath + L"\\AdblockPlus"; |
| } |
| std::auto_ptr<AdblockPlus::FilterEngine> CreateFilterEngine() |
| { |
| // TODO: Pass appInfo in, which should be sent by the client |
| AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(); |
| std::string dataPath = ToUtf8String(GetAppDataPath()); |
| dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get())->SetBasePath(dataPath); |
| @@ -224,21 +178,21 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, |
| Communication::Pipe* pipe = new Communication::Pipe(Communication::pipeName, |
| Communication::Pipe::MODE_CREATE); |
| // TODO: Count established connections, kill the engine when none are left |
| AutoHandle thread(CreateThread(0, 0, ClientThread, static_cast<LPVOID>(pipe), 0, 0)); |
| if (!thread.get()) |
| { |
| delete pipe; |
| - LogLastError("CreateThread failed"); |
| + DebugLastError("CreateThread failed"); |
| return 1; |
| } |
| } |
| catch (std::runtime_error e) |
| { |
| - LogException(e); |
| + DebugException(e); |
| return 1; |
| } |
| } |
| return 0; |
| } |