// Copyright (c) 2012 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_LOG_TO_SERVER_H_ #define REMOTING_HOST_LOG_TO_SERVER_H_ #include #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/threading/non_thread_safe.h" #include "remoting/host/host_status_observer.h" #include "remoting/host/server_log_entry.h" #include "remoting/jingle_glue/signal_strategy.h" namespace base { class MessageLoopProxy; } // namespace base namespace buzz { class XmlElement; } // namespace buzz namespace remoting { class ChromotingHost; class IqSender; // LogToServer sends log entries to a server. class LogToServer : public base::NonThreadSafe, public HostStatusObserver, public SignalStrategy::Listener { public: explicit LogToServer(SignalStrategy* signal_strategy); virtual ~LogToServer(); // Logs a session state change. Currently, this is either // connection or disconnection. void LogSessionStateChange(bool connected); // SignalStrategy::Listener interface. virtual void OnSignalStrategyStateChange( SignalStrategy::State state) OVERRIDE; // HostStatusObserver interface. virtual void OnClientAuthenticated(const std::string& jid) OVERRIDE; virtual void OnClientDisconnected(const std::string& jid) OVERRIDE; virtual void OnAccessDenied() OVERRIDE; virtual void OnShutdown() OVERRIDE; private: void Log(const ServerLogEntry& entry); void SendPendingEntries(); scoped_refptr host_; SignalStrategy* signal_strategy_; scoped_ptr iq_sender_; std::deque pending_entries_; DISALLOW_COPY_AND_ASSIGN(LogToServer); }; } // namespace remoting #endif // REMOTING_HOST_LOG_TO_SERVER_H_