1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef REMOTING_SIGNALING_LOG_TO_SERVER_H_ 6 #define REMOTING_SIGNALING_LOG_TO_SERVER_H_ 7 8 #include <deque> 9 #include <map> 10 #include <string> 11 12 #include "base/threading/non_thread_safe.h" 13 #include "remoting/signaling/server_log_entry.h" 14 #include "remoting/signaling/signal_strategy.h" 15 16 namespace buzz { 17 class XmlElement; 18 } // namespace buzz 19 20 namespace remoting { 21 22 class IqSender; 23 24 // LogToServer sends log entries to a server. 25 // The contents of the log entries are described in server_log_entry.cc. 26 // They do not contain any personally identifiable information. 27 class LogToServer : public base::NonThreadSafe, 28 public SignalStrategy::Listener { 29 public: 30 LogToServer(ServerLogEntry::Mode mode, 31 SignalStrategy* signal_strategy, 32 const std::string& directory_bot_jid); 33 virtual ~LogToServer(); 34 35 // SignalStrategy::Listener interface. 36 virtual void OnSignalStrategyStateChange( 37 SignalStrategy::State state) OVERRIDE; 38 virtual bool OnSignalStrategyIncomingStanza( 39 const buzz::XmlElement* stanza) OVERRIDE; 40 41 void Log(const ServerLogEntry& entry); 42 43 ServerLogEntry::Mode mode() { return mode_; } 44 45 private: 46 void SendPendingEntries(); 47 48 ServerLogEntry::Mode mode_; 49 SignalStrategy* signal_strategy_; 50 scoped_ptr<IqSender> iq_sender_; 51 std::string directory_bot_jid_; 52 53 std::deque<ServerLogEntry> pending_entries_; 54 55 DISALLOW_COPY_AND_ASSIGN(LogToServer); 56 }; 57 58 } // namespace remoting 59 60 #endif // REMOTING_SIGNALING_LOG_TO_SERVER_H_ 61