| Index: remoting/host/heartbeat_sender.cc
|
| ===================================================================
|
| --- remoting/host/heartbeat_sender.cc (revision 0)
|
| +++ remoting/host/heartbeat_sender.cc (revision 0)
|
| @@ -0,0 +1,69 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#include "remoting/host/heartbeat_sender.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/message_loop.h"
|
| +#include "remoting/base/constants.h"
|
| +#include "remoting/jingle_glue/iq_request.h"
|
| +#include "remoting/jingle_glue/jingle_client.h"
|
| +#include "remoting/jingle_glue/jingle_thread.h"
|
| +#include "talk/xmpp/constants.h"
|
| +#include "talk/xmllite/xmlelement.h"
|
| +
|
| +namespace remoting {
|
| +
|
| +namespace {
|
| +const char * const kChromotingNamespace = "google:remoting";
|
| +const buzz::QName kHeartbeatQuery(true, kChromotingNamespace, "heartbeat");
|
| +const buzz::QName kHostIdAttr(true, kChromotingNamespace, "hostid");
|
| +
|
| +// TODO(sergeyu): Make this configurable by the cloud.
|
| +const int64 kHeartbeatPeriodMs = 5 * 60 * 1000; // 5 minutes.
|
| +}
|
| +
|
| +HeartbeatSender::HeartbeatSender()
|
| + : started_(false) {
|
| +}
|
| +
|
| +void HeartbeatSender::Start(JingleClient* jingle_client,
|
| + const std::string& host_id) {
|
| + DCHECK(jingle_client);
|
| + DCHECK(!started_);
|
| +
|
| + started_ = true;
|
| +
|
| + jingle_client_ = jingle_client;
|
| + host_id_ = host_id;
|
| +
|
| + jingle_client_->message_loop()->PostTask(
|
| + FROM_HERE, NewRunnableMethod(this, &HeartbeatSender::DoStart));
|
| +}
|
| +
|
| +void HeartbeatSender::DoStart() {
|
| + DCHECK(MessageLoop::current() == jingle_client_->message_loop());
|
| +
|
| + request_.reset(new IqRequest(jingle_client_));
|
| +
|
| + jingle_client_->message_loop()->PostTask(
|
| + FROM_HERE, NewRunnableMethod(this, &HeartbeatSender::DoSendStanza));
|
| +}
|
| +
|
| +void HeartbeatSender::DoSendStanza() {
|
| + DCHECK(MessageLoop::current() == jingle_client_->message_loop());
|
| +
|
| + LOG(INFO) << "Sending heartbeat stanza to " << kChromotingBotJid;
|
| +
|
| + buzz::XmlElement* stanza = new buzz::XmlElement(kHeartbeatQuery);
|
| + stanza->AddAttr(kHostIdAttr, host_id_);
|
| + request_->SendIq(buzz::STR_SET, kChromotingBotJid, stanza);
|
| +
|
| + // Schedule next heartbeat.
|
| + jingle_client_->message_loop()->PostDelayedTask(
|
| + FROM_HERE, NewRunnableMethod(this, &HeartbeatSender::DoSendStanza),
|
| + kHeartbeatPeriodMs);
|
| +}
|
| +
|
| +} // namespace remoting
|
|
|
| Property changes on: remoting/host/heartbeat_sender.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|