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.
5 #ifndef REMOTING_SIGNALING_LOG_TO_SERVER_H_
6 #define REMOTING_SIGNALING_LOG_TO_SERVER_H_
12 #include "base/threading/non_thread_safe.h"
13 #include "remoting/signaling/server_log_entry.h"
14 #include "remoting/signaling/signal_strategy.h"
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
{
30 LogToServer(ServerLogEntry::Mode mode
,
31 SignalStrategy
* signal_strategy
,
32 const std::string
& directory_bot_jid
);
33 virtual ~LogToServer();
35 // SignalStrategy::Listener interface.
36 virtual void OnSignalStrategyStateChange(
37 SignalStrategy::State state
) OVERRIDE
;
38 virtual bool OnSignalStrategyIncomingStanza(
39 const buzz::XmlElement
* stanza
) OVERRIDE
;
41 void Log(const ServerLogEntry
& entry
);
43 ServerLogEntry::Mode
mode() { return mode_
; }
46 void SendPendingEntries();
48 ServerLogEntry::Mode mode_
;
49 SignalStrategy
* signal_strategy_
;
50 scoped_ptr
<IqSender
> iq_sender_
;
51 std::string directory_bot_jid_
;
53 std::deque
<ServerLogEntry
> pending_entries_
;
55 DISALLOW_COPY_AND_ASSIGN(LogToServer
);
58 } // namespace remoting
60 #endif // REMOTING_SIGNALING_LOG_TO_SERVER_H_