Index: remoting/host/host_event_logger_win.cc |
diff --git a/remoting/host/host_event_logger_win.cc b/remoting/host/host_event_logger_win.cc |
index 7e13a40445135c2a522d88eef04ed9cfef8a90ca..a0a30c9de9ca4146c597e1cf655ac8fbb6924894 100644 |
--- a/remoting/host/host_event_logger_win.cc |
+++ b/remoting/host/host_event_logger_win.cc |
@@ -8,12 +8,12 @@ |
#include <string> |
#include <vector> |
-#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/string16.h" |
#include "base/utf_string_conversions.h" |
#include "net/base/ip_endpoint.h" |
-#include "remoting/host/chromoting_host.h" |
+#include "remoting/host/host_status_monitor.h" |
#include "remoting/host/host_status_observer.h" |
#include "remoting/protocol/transport.h" |
@@ -25,7 +25,8 @@ namespace { |
class HostEventLoggerWin : public HostEventLogger, public HostStatusObserver { |
public: |
- HostEventLoggerWin(ChromotingHost* host, const std::string& application_name); |
+ HostEventLoggerWin(base::WeakPtr<HostStatusMonitor> monitor, |
+ const std::string& application_name); |
virtual ~HostEventLoggerWin(); |
@@ -45,7 +46,7 @@ class HostEventLoggerWin : public HostEventLogger, public HostStatusObserver { |
void LogString(WORD type, DWORD event_id, const std::string& string); |
void Log(WORD type, DWORD event_id, const std::vector<std::string>& strings); |
- scoped_refptr<ChromotingHost> host_; |
+ base::WeakPtr<HostStatusMonitor> monitor_; |
// The handle of the application event log. |
HANDLE event_log_; |
@@ -55,14 +56,14 @@ class HostEventLoggerWin : public HostEventLogger, public HostStatusObserver { |
} //namespace |
-HostEventLoggerWin::HostEventLoggerWin(ChromotingHost* host, |
+HostEventLoggerWin::HostEventLoggerWin(base::WeakPtr<HostStatusMonitor> monitor, |
const std::string& application_name) |
- : host_(host), |
+ : monitor_(monitor), |
event_log_(NULL) { |
event_log_ = RegisterEventSourceW(NULL, |
UTF8ToUTF16(application_name).c_str()); |
if (event_log_ != NULL) { |
- host_->AddStatusObserver(this); |
+ monitor_->AddStatusObserver(this); |
} else { |
LOG_GETLASTERROR(ERROR) << "Failed to register the event source: " |
<< application_name; |
@@ -71,7 +72,8 @@ HostEventLoggerWin::HostEventLoggerWin(ChromotingHost* host, |
HostEventLoggerWin::~HostEventLoggerWin() { |
if (event_log_ != NULL) { |
- host_->RemoveStatusObserver(this); |
+ if (monitor_) |
+ monitor_->RemoveStatusObserver(this); |
DeregisterEventSource(event_log_); |
} |
} |
@@ -147,9 +149,10 @@ void HostEventLoggerWin::LogString(WORD type, |
// static |
scoped_ptr<HostEventLogger> HostEventLogger::Create( |
- ChromotingHost* host, const std::string& application_name) { |
+ base::WeakPtr<HostStatusMonitor> monitor, |
+ const std::string& application_name) { |
return scoped_ptr<HostEventLogger>( |
- new HostEventLoggerWin(host, application_name)); |
+ new HostEventLoggerWin(monitor, application_name)); |
} |
} // namespace remoting |