// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_HOST_HOST_STATUS_LOGGER_H_ #define REMOTING_HOST_HOST_STATUS_LOGGER_H_ #include #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/threading/non_thread_safe.h" #include "remoting/host/host_status_observer.h" #include "remoting/protocol/transport.h" #include "remoting/signaling/log_to_server.h" namespace remoting { class HostStatusMonitor; // HostStatusLogger sends host log entries to a server. // The contents of the log entries are described in server_log_entry_host.cc. // They do not contain any personally identifiable information. class HostStatusLogger : public HostStatusObserver, public base::NonThreadSafe { public: HostStatusLogger(base::WeakPtr monitor, ServerLogEntry::Mode mode, SignalStrategy* signal_strategy, const std::string& directory_bot_jid); ~HostStatusLogger() override; // Logs a session state change. Currently, this is either // connection or disconnection. void LogSessionStateChange(const std::string& jid, bool connected); // HostStatusObserver interface. void OnClientConnected(const std::string& jid) override; void OnClientDisconnected(const std::string& jid) override; void OnClientRouteChange(const std::string& jid, const std::string& channel_name, const protocol::TransportRoute& route) override; // Allows test code to fake SignalStrategy state change events. void SetSignalingStateForTest(SignalStrategy::State state); private: LogToServer log_to_server_; base::WeakPtr monitor_; // A map from client JID to the route type of that client's connection to // this host. std::map connection_route_type_; DISALLOW_COPY_AND_ASSIGN(HostStatusLogger); }; } // namespace remoting #endif // REMOTING_HOST_HOST_STATUS_LOGGER_H_