Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: src/plugin/AdblockPlusClient.cpp

Issue 11430025: Shut down the engine when the last tab is closed (Closed)
Left Patch Set: Created Aug. 7, 2013, 2:57 p.m.
Right Patch Set: Thread safety Created Aug. 8, 2013, 1:45 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « src/plugin/AdblockPlusClient.h ('k') | src/shared/Communication.h » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginSettings.h" 3 #include "PluginSettings.h"
4 #include "PluginSystem.h" 4 #include "PluginSystem.h"
5 #include "PluginFilter.h" 5 #include "PluginFilter.h"
6 #include "PluginClientFactory.h" 6 #include "PluginClientFactory.h"
7 #include "PluginMutex.h" 7 #include "PluginMutex.h"
8 #include "PluginClass.h" 8 #include "PluginClass.h"
9 9
10 #include "AdblockPlusClient.h" 10 #include "AdblockPlusClient.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 { 42 {
43 try 43 try
44 { 44 {
45 return new Communication::Pipe(Communication::pipeName, Communication::Pip e::MODE_CONNECT); 45 return new Communication::Pipe(Communication::pipeName, Communication::Pip e::MODE_CONNECT);
46 } 46 }
47 catch (Communication::PipeConnectionError e) 47 catch (Communication::PipeConnectionError e)
48 { 48 {
49 SpawnAdblockPlusEngine(); 49 SpawnAdblockPlusEngine();
50 50
51 const int step = 100; 51 const int step = 100;
52 for (int timeout = 10000; timeout > 0; timeout -= step) 52 for (int timeout = ENGINE_STARTUP_TIMEOUT; timeout > 0; timeout -= step)
53 { 53 {
54 Sleep(step); 54 Sleep(step);
55 try 55 try
56 { 56 {
57 return new Communication::Pipe(Communication::pipeName, Communication: :Pipe::MODE_CONNECT); 57 return new Communication::Pipe(Communication::pipeName, Communication: :Pipe::MODE_CONNECT);
58 } 58 }
59 catch (Communication::PipeConnectionError e) 59 catch (Communication::PipeConnectionError e)
60 { 60 {
61 } 61 }
62 } 62 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 CAdblockPlusClient* CAdblockPlusClient::s_instance = NULL; 107 CAdblockPlusClient* CAdblockPlusClient::s_instance = NULL;
108 108
109 CAdblockPlusClient::CAdblockPlusClient() : CPluginClientBase() 109 CAdblockPlusClient::CAdblockPlusClient() : CPluginClientBase()
110 { 110 {
111 m_filter = std::auto_ptr<CPluginFilter>(new CPluginFilter()); 111 m_filter = std::auto_ptr<CPluginFilter>(new CPluginFilter());
112 } 112 }
113 113
114 bool CAdblockPlusClient::CallEngine(Communication::OutputBuffer& message, Commun ication::InputBuffer& inputBuffer) 114 bool CAdblockPlusClient::CallEngine(Communication::OutputBuffer& message, Commun ication::InputBuffer& inputBuffer)
115 { 115 {
116 CriticalSection::Lock lock(enginePipeLock);
116 try 117 try
117 { 118 {
118 if (!enginePipe) 119 if (!enginePipe)
119 enginePipe.reset(OpenEnginePipe()); 120 enginePipe.reset(OpenEnginePipe());
Oleksandr 2013/08/08 06:26:31 Might it make sense to have some sort of a thread
Felix Dahlke 2013/08/08 08:32:51 Do we use a single CAdblockPlusClient instance fro
120 enginePipe->WriteMessage(message); 121 enginePipe->WriteMessage(message);
121 inputBuffer = enginePipe->ReadMessage(); 122 inputBuffer = enginePipe->ReadMessage();
122 } 123 }
123 catch (const std::exception& e) 124 catch (const std::exception& e)
124 { 125 {
125 DEBUG_GENERAL(e.what()); 126 DEBUG_GENERAL(e.what());
126 return false; 127 return false;
127 } 128 }
128 return true; 129 return true;
129 } 130 }
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 427
427 std::wstring CAdblockPlusClient::GetDocumentationLink() 428 std::wstring CAdblockPlusClient::GetDocumentationLink()
428 { 429 {
429 Communication::InputBuffer response; 430 Communication::InputBuffer response;
430 if (!CallEngine(Communication::PROC_GET_DOCUMENTATION_LINK, response)) 431 if (!CallEngine(Communication::PROC_GET_DOCUMENTATION_LINK, response))
431 return L""; 432 return L"";
432 std::wstring docLink; 433 std::wstring docLink;
433 response >> docLink; 434 response >> docLink;
434 return docLink; 435 return docLink;
435 } 436 }
LEFTRIGHT

Powered by Google App Engine
This is Rietveld