| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/host/heartbeat_sender.h" | 5 #include "remoting/host/heartbeat_sender.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 double delay = pow(2.0, sequence_id_recent_set_num_) * | 298 double delay = pow(2.0, sequence_id_recent_set_num_) * |
| 299 (1 + base::RandDouble()) * kResendDelayMs; | 299 (1 + base::RandDouble()) * kResendDelayMs; |
| 300 if (delay <= interval_ms_) { | 300 if (delay <= interval_ms_) { |
| 301 timer_resend_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(delay), | 301 timer_resend_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(delay), |
| 302 this, &HeartbeatSender::ResendStanza); | 302 this, &HeartbeatSender::ResendStanza); |
| 303 } | 303 } |
| 304 } | 304 } |
| 305 sequence_id_was_set_ = true; | 305 sequence_id_was_set_ = true; |
| 306 } | 306 } |
| 307 | 307 |
| 308 scoped_ptr<XmlElement> HeartbeatSender::CreateHeartbeatMessage() { | 308 std::unique_ptr<XmlElement> HeartbeatSender::CreateHeartbeatMessage() { |
| 309 // Create heartbeat stanza. | 309 // Create heartbeat stanza. |
| 310 scoped_ptr<XmlElement> heartbeat(new XmlElement( | 310 std::unique_ptr<XmlElement> heartbeat( |
| 311 QName(kChromotingXmlNamespace, kHeartbeatQueryTag))); | 311 new XmlElement(QName(kChromotingXmlNamespace, kHeartbeatQueryTag))); |
| 312 heartbeat->AddAttr(QName(kChromotingXmlNamespace, kHostIdAttr), host_id_); | 312 heartbeat->AddAttr(QName(kChromotingXmlNamespace, kHostIdAttr), host_id_); |
| 313 heartbeat->AddAttr(QName(kChromotingXmlNamespace, kSequenceIdAttr), | 313 heartbeat->AddAttr(QName(kChromotingXmlNamespace, kSequenceIdAttr), |
| 314 base::IntToString(sequence_id_)); | 314 base::IntToString(sequence_id_)); |
| 315 if (!host_offline_reason_.empty()) { | 315 if (!host_offline_reason_.empty()) { |
| 316 heartbeat->AddAttr( | 316 heartbeat->AddAttr( |
| 317 QName(kChromotingXmlNamespace, kHostOfflineReasonAttr), | 317 QName(kChromotingXmlNamespace, kHostOfflineReasonAttr), |
| 318 host_offline_reason_); | 318 host_offline_reason_); |
| 319 } | 319 } |
| 320 heartbeat->AddElement(CreateSignature().release()); | 320 heartbeat->AddElement(CreateSignature().release()); |
| 321 // Append host version. | 321 // Append host version. |
| 322 scoped_ptr<XmlElement> version_tag(new XmlElement( | 322 std::unique_ptr<XmlElement> version_tag( |
| 323 QName(kChromotingXmlNamespace, kHostVersionTag))); | 323 new XmlElement(QName(kChromotingXmlNamespace, kHostVersionTag))); |
| 324 version_tag->AddText(STRINGIZE(VERSION)); | 324 version_tag->AddText(STRINGIZE(VERSION)); |
| 325 heartbeat->AddElement(version_tag.release()); | 325 heartbeat->AddElement(version_tag.release()); |
| 326 // If we have not recorded a heartbeat success, continue sending host OS info. | 326 // If we have not recorded a heartbeat success, continue sending host OS info. |
| 327 if (!heartbeat_succeeded_) { | 327 if (!heartbeat_succeeded_) { |
| 328 // Append host OS name. | 328 // Append host OS name. |
| 329 scoped_ptr<XmlElement> os_name_tag(new XmlElement( | 329 std::unique_ptr<XmlElement> os_name_tag(new XmlElement( |
| 330 QName(kChromotingXmlNamespace, kHostOperatingSystemNameTag))); | 330 QName(kChromotingXmlNamespace, kHostOperatingSystemNameTag))); |
| 331 os_name_tag->AddText(GetHostOperatingSystemName()); | 331 os_name_tag->AddText(GetHostOperatingSystemName()); |
| 332 heartbeat->AddElement(os_name_tag.release()); | 332 heartbeat->AddElement(os_name_tag.release()); |
| 333 // Append host OS version. | 333 // Append host OS version. |
| 334 scoped_ptr<XmlElement> os_version_tag(new XmlElement( | 334 std::unique_ptr<XmlElement> os_version_tag(new XmlElement( |
| 335 QName(kChromotingXmlNamespace, kHostOperatingSystemVersionTag))); | 335 QName(kChromotingXmlNamespace, kHostOperatingSystemVersionTag))); |
| 336 os_version_tag->AddText(GetHostOperatingSystemVersion()); | 336 os_version_tag->AddText(GetHostOperatingSystemVersion()); |
| 337 heartbeat->AddElement(os_version_tag.release()); | 337 heartbeat->AddElement(os_version_tag.release()); |
| 338 } | 338 } |
| 339 // Append log message (which isn't signed). | 339 // Append log message (which isn't signed). |
| 340 scoped_ptr<XmlElement> log(ServerLogEntry::MakeStanza()); | 340 std::unique_ptr<XmlElement> log(ServerLogEntry::MakeStanza()); |
| 341 scoped_ptr<ServerLogEntry> log_entry(MakeLogEntryForHeartbeat()); | 341 std::unique_ptr<ServerLogEntry> log_entry(MakeLogEntryForHeartbeat()); |
| 342 AddHostFieldsToLogEntry(log_entry.get()); | 342 AddHostFieldsToLogEntry(log_entry.get()); |
| 343 log->AddElement(log_entry->ToStanza().release()); | 343 log->AddElement(log_entry->ToStanza().release()); |
| 344 heartbeat->AddElement(log.release()); | 344 heartbeat->AddElement(log.release()); |
| 345 return heartbeat; | 345 return heartbeat; |
| 346 } | 346 } |
| 347 | 347 |
| 348 scoped_ptr<XmlElement> HeartbeatSender::CreateSignature() { | 348 std::unique_ptr<XmlElement> HeartbeatSender::CreateSignature() { |
| 349 scoped_ptr<XmlElement> signature_tag(new XmlElement( | 349 std::unique_ptr<XmlElement> signature_tag( |
| 350 QName(kChromotingXmlNamespace, kHeartbeatSignatureTag))); | 350 new XmlElement(QName(kChromotingXmlNamespace, kHeartbeatSignatureTag))); |
| 351 | 351 |
| 352 std::string message = NormalizeJid(signal_strategy_->GetLocalJid()) + ' ' + | 352 std::string message = NormalizeJid(signal_strategy_->GetLocalJid()) + ' ' + |
| 353 base::IntToString(sequence_id_); | 353 base::IntToString(sequence_id_); |
| 354 std::string signature(host_key_pair_->SignMessage(message)); | 354 std::string signature(host_key_pair_->SignMessage(message)); |
| 355 signature_tag->AddText(signature); | 355 signature_tag->AddText(signature); |
| 356 | 356 |
| 357 return signature_tag; | 357 return signature_tag; |
| 358 } | 358 } |
| 359 | 359 |
| 360 } // namespace remoting | 360 } // namespace remoting |
| OLD | NEW |