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 |