Home | History | Annotate | Download | only in signaling
      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