| Index: src/engine/main.cpp |
| =================================================================== |
| --- a/src/engine/main.cpp |
| +++ b/src/engine/main.cpp |
| @@ -47,89 +47,100 @@ namespace |
| << subscription->IsListed(); |
| } |
| } |
| Communication::OutputBuffer HandleRequest(Communication::InputBuffer& request) |
| { |
| Communication::OutputBuffer response; |
| - std::string procedureName; |
| - request >> procedureName; |
| - if (procedureName == "Matches") |
| + Communication::ProcType procedure; |
| + request >> procedure; |
| + switch (procedure) |
| { |
| - std::string url; |
| - std::string type; |
| - std::string documentUrl; |
| - request >> url >> type >> documentUrl; |
| - response << filterEngine->Matches(url, type, documentUrl); |
| - } |
| - else if (procedureName == "GetElementHidingSelectors") |
| - { |
| - std::string domain; |
| - request >> domain; |
| - WriteStrings(response, filterEngine->GetElementHidingSelectors(domain)); |
| - } |
| - else if (procedureName == "FetchAvailableSubscriptions") |
| - { |
| - WriteSubscriptions(response, filterEngine->FetchAvailableSubscriptions()); |
| - } |
| - else if (procedureName == "GetListedSubscriptions") |
| - { |
| - WriteSubscriptions(response, filterEngine->GetListedSubscriptions()); |
| - } |
| - else if (procedureName == "SetSubscription") |
| - { |
| - std::string url; |
| - request >> url; |
| + case Communication::PROC_MATCHES: |
| + { |
| + std::string url; |
| + std::string type; |
| + std::string documentUrl; |
| + request >> url >> type >> documentUrl; |
| + response << filterEngine->Matches(url, type, documentUrl); |
| + break; |
| + } |
| + case Communication::PROC_GET_ELEMHIDE_SELECTORS: |
| + { |
| + std::string domain; |
| + request >> domain; |
| + WriteStrings(response, filterEngine->GetElementHidingSelectors(domain)); |
| + break; |
| + } |
| + case Communication::PROC_AVAILABLE_SUBSCRIPTIONS: |
| + { |
| + WriteSubscriptions(response, filterEngine->FetchAvailableSubscriptions()); |
| + break; |
| + } |
| + case Communication::PROC_LISTED_SUBSCRIPTIONS: |
| + { |
| + WriteSubscriptions(response, filterEngine->GetListedSubscriptions()); |
| + break; |
| + } |
| + case Communication::PROC_SET_SUBSCRIPTION: |
| + { |
| + std::string url; |
| + request >> url; |
| - std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |
| - for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| - subscriptions[i]->RemoveFromList(); |
| + std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |
| + for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| + subscriptions[i]->RemoveFromList(); |
| - filterEngine->GetSubscription(url)->AddToList(); |
| - } |
| - else if (procedureName == "UpdateAllSubscriptions") |
| - { |
| - std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |
| - for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| - subscriptions[i]->UpdateFilters(); |
| - } |
| - else if (procedureName == "GetExceptionDomains") |
| - { |
| - std::vector<AdblockPlus::FilterPtr> filters = filterEngine->GetListedFilters(); |
| - std::vector<std::string> domains; |
| - for (size_t i = 0, count = filters.size(); i < count; i++) |
| + filterEngine->GetSubscription(url)->AddToList(); |
| + break; |
| + } |
| + case Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS: |
| { |
| - AdblockPlus::FilterPtr filter = filters[i]; |
| - if (filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION) |
| + std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |
| + for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| + subscriptions[i]->UpdateFilters(); |
| + break; |
| + } |
| + case Communication::PROC_GET_EXCEPTION_DOMAINS: |
| + { |
| + std::vector<AdblockPlus::FilterPtr> filters = filterEngine->GetListedFilters(); |
| + std::vector<std::string> domains; |
| + for (size_t i = 0, count = filters.size(); i < count; i++) |
| { |
| - std::string text = filter->GetProperty("text")->AsString(); |
| + AdblockPlus::FilterPtr filter = filters[i]; |
| + if (filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION) |
| + { |
| + std::string text = filter->GetProperty("text")->AsString(); |
| - //@@||example.com^$document |
| - const char prefix[] = "@@||"; |
| - const char suffix[] = "^$document"; |
| - const int prefixLen = strlen(prefix); |
| - const int suffixLen = strlen(suffix); |
| - if (!text.compare(0, prefixLen, prefix) && |
| - !text.compare(text.size() - suffixLen, suffixLen, suffix)) |
| - { |
| - domains.push_back(text.substr(prefixLen, text.size() - prefixLen - suffixLen)); |
| + //@@||example.com^$document |
| + const char prefix[] = "@@||"; |
| + const char suffix[] = "^$document"; |
| + const int prefixLen = strlen(prefix); |
| + const int suffixLen = strlen(suffix); |
| + if (!text.compare(0, prefixLen, prefix) && |
| + !text.compare(text.size() - suffixLen, suffixLen, suffix)) |
| + { |
| + domains.push_back(text.substr(prefixLen, text.size() - prefixLen - suffixLen)); |
| + } |
| } |
| } |
| + |
| + WriteStrings(response, domains); |
| + break; |
| } |
| + case Communication::PROC_ADD_FILTER: |
| + { |
| + std::string text; |
| + request >> text; |
| - WriteStrings(response, domains); |
| - } |
| - else if (procedureName == "AddFilter") |
| - { |
| - std::string text; |
| - request >> text; |
| - |
| - filterEngine->GetFilter(text)->AddToList(); |
| + filterEngine->GetFilter(text)->AddToList(); |
| + break; |
| + } |
| } |
| return response; |
| } |
| DWORD WINAPI ClientThread(LPVOID param) |
| { |
| std::auto_ptr<Communication::Pipe> pipe(static_cast<Communication::Pipe*>(param)); |