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)); |