Chromium Code Reviews| Index: ceee/ie/plugin/toolband/toolband_module.cc |
| =================================================================== |
| --- ceee/ie/plugin/toolband/toolband_module.cc (revision 65555) |
| +++ ceee/ie/plugin/toolband/toolband_module.cc (working copy) |
| @@ -12,6 +12,7 @@ |
| #include "base/thread.h" |
| #include "ceee/common/com_utils.h" |
| #include "ceee/common/install_utils.h" |
| +#include "ceee/ie/broker/broker_rpc_client.h" |
| #include "ceee/ie/common/ceee_module_util.h" |
| #include "ceee/ie/plugin/bho/browser_helper_object.h" |
| #include "ceee/ie/plugin/bho/executor.h" |
| @@ -80,10 +81,7 @@ |
| // worker thread can be used. |
| void FireEventToBroker(BSTR event_name, BSTR event_args); |
| protected: |
| - CComPtr<ICeeeBroker> broker_; |
| - static const int kMaxNumberOfRetries = 5; |
| - static const int64 kRetryDelayMs = 10; |
| - int current_number_of_retries_; |
| + BrokerRpcClient broker_rpc_; |
| }; |
| class FireEventTask : public Task { |
| @@ -95,13 +93,6 @@ |
| event_name_(event_name.c_str()), |
| event_args_(event_args.c_str()) { |
| } |
| - FireEventTask(ComWorkerThread* worker_thread, |
| - const BSTR event_name, |
| - const BSTR event_args) |
| - : worker_thread_(worker_thread), |
| - event_name_(event_name), |
| - event_args_(event_args) { |
| - } |
| virtual void Run() { |
| worker_thread_->FireEventToBroker(event_name_, event_args_); |
| } |
| @@ -291,42 +282,29 @@ |
| ToolbandModule::ComWorkerThread::ComWorkerThread() |
| - : base::Thread("CEEE-COM Worker Thread"), |
| - current_number_of_retries_(0) { |
| + : base::Thread("CEEE-COM Worker Thread") { |
| } |
| void ToolbandModule::ComWorkerThread::Init() { |
| ::CoInitializeEx(0, COINIT_MULTITHREADED); |
|
Sigurður Ásgeirsson
2010/11/11 19:30:35
I believe this thread and all its associated machi
Vitaly Buka corp
2010/11/11 23:12:10
yes. I planed to change this in separate CL.
Howev
|
| + // TODO(vitalybuka@google.com): Start broker without COM. |
| + CComPtr<ICeeeBroker> broker_; |
| HRESULT hr = broker_.CoCreateInstance(CLSID_CeeeBroker); |
| DCHECK(SUCCEEDED(hr)) << "Failed to create broker. " << com::LogHr(hr); |
| + broker_rpc_.Connect(); |
| + DCHECK(broker_rpc_.is_connected()); |
| + ::CoUninitialize(); |
| } |
| void ToolbandModule::ComWorkerThread::CleanUp() { |
| - broker_.Release(); |
| - ::CoUninitialize(); |
| + broker_rpc_.Disconnect(); |
| } |
| void ToolbandModule::ComWorkerThread::FireEventToBroker(BSTR event_name, |
| - BSTR event_args) { |
| - DCHECK(broker_ != NULL); |
| - if (broker_ != NULL) { |
| - HRESULT hr = broker_->FireEvent(event_name, event_args); |
| - if (SUCCEEDED(hr)) { |
| - current_number_of_retries_ = 0; |
| - return; |
| - } |
| - // If the server is busy (which can happen if it is calling in as we try to |
| - // to call out to it), then we should retry a few times a little later. |
| - if (current_number_of_retries_ < kMaxNumberOfRetries && message_loop()) { |
| - ++current_number_of_retries_; |
| - LOG(WARNING) << "Retrying Broker FireEvent Failure. " << com::LogHr(hr); |
| - message_loop()->PostDelayedTask(FROM_HERE, |
| - new FireEventTask(this, event_name, event_args), kRetryDelayMs); |
| - } else { |
| - current_number_of_retries_ = 0; |
| - DCHECK(SUCCEEDED(hr)) << "Broker FireEvent Failed. " << com::LogHr(hr); |
| - } |
| - } |
| + BSTR event_args) { |
| + DCHECK(broker_rpc_.is_connected()); |
| + bool result = broker_rpc_.FireEvent(event_name, event_args); |
| + DCHECK(result); |
| } |
| ToolbandModule module; |