12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef REMOTING_HOST_IPC_HOST_EVENT_LOGGER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define REMOTING_HOST_IPC_HOST_EVENT_LOGGER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/threading/non_thread_safe.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "remoting/host/host_event_logger.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "remoting/host/host_status_observer.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace IPC { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Sender; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace IPC 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace remoting { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class HostStatusMonitor; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IpcHostEventLogger 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public base::NonThreadSafe, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public HostEventLogger, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public HostStatusObserver { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Initializes the logger. |daemon_channel| must outlive this object. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IpcHostEventLogger(base::WeakPtr<HostStatusMonitor> monitor, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC::Sender* daemon_channel); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~IpcHostEventLogger(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // HostStatusObserver interface. 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnAccessDenied(const std::string& jid) OVERRIDE; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnClientAuthenticated(const std::string& jid) OVERRIDE; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnClientConnected(const std::string& jid) OVERRIDE; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnClientDisconnected(const std::string& jid) OVERRIDE; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnClientRouteChange( 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& jid, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& channel_name, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const protocol::TransportRoute& route) OVERRIDE; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnStart(const std::string& xmpp_login) OVERRIDE; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnShutdown() OVERRIDE; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used to report host status events to the daemon. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC::Sender* daemon_channel_; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::WeakPtr<HostStatusMonitor> monitor_; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(IpcHostEventLogger); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // REMOTING_HOST_IPC_HOST_EVENT_LOGGER_H_ 60