Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: remoting/host/heartbeat_sender.cc

Issue 9301026: Virtual Me2Me Host: Exit process if Host ID is invalid. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
11 #include "base/time.h" 11 #include "base/time.h"
12 #include "remoting/base/constants.h" 12 #include "remoting/base/constants.h"
13 #include "remoting/jingle_glue/iq_sender.h" 13 #include "remoting/jingle_glue/iq_sender.h"
14 #include "remoting/jingle_glue/jingle_thread.h" 14 #include "remoting/jingle_glue/jingle_thread.h"
15 #include "remoting/jingle_glue/signal_strategy.h" 15 #include "remoting/jingle_glue/signal_strategy.h"
16 #include "remoting/protocol/jingle_messages.h"
Sergey Ulanov 2012/01/31 02:37:13 don't need this include.
Lambros 2012/01/31 21:57:29 Done.
16 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h" 17 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h"
17 #include "third_party/libjingle/source/talk/xmpp/constants.h" 18 #include "third_party/libjingle/source/talk/xmpp/constants.h"
18 19
19 using buzz::QName; 20 using buzz::QName;
20 using buzz::XmlElement; 21 using buzz::XmlElement;
21 22
22 namespace remoting { 23 namespace remoting {
23 24
24 namespace { 25 namespace {
25 26
26 const char kHeartbeatQueryTag[] = "heartbeat"; 27 const char kHeartbeatQueryTag[] = "heartbeat";
27 const char kHostIdAttr[] = "hostid"; 28 const char kHostIdAttr[] = "hostid";
28 const char kHeartbeatSignatureTag[] = "signature"; 29 const char kHeartbeatSignatureTag[] = "signature";
29 const char kSignatureTimeAttr[] = "time"; 30 const char kSignatureTimeAttr[] = "time";
30 31
32 const char kErrorTag[] = "error";
Sergey Ulanov 2012/01/31 02:37:13 IMO it is not necessary to define it here if it is
Wez 2012/01/31 05:44:03 We may as well define it, for consistency with the
Sergey Ulanov 2012/01/31 07:41:35 Or alternatively we could remove other constants t
Lambros 2012/01/31 21:57:29 Normally, I'd agree that defining a constant for s
33 const char kNotFoundTag[] = "item-not-found";
34
31 const char kHeartbeatResultTag[] = "heartbeat-result"; 35 const char kHeartbeatResultTag[] = "heartbeat-result";
32 const char kSetIntervalTag[] = "set-interval"; 36 const char kSetIntervalTag[] = "set-interval";
33 37
34 const int64 kDefaultHeartbeatIntervalMs = 5 * 60 * 1000; // 5 minutes. 38 const int64 kDefaultHeartbeatIntervalMs = 5 * 60 * 1000; // 5 minutes.
35 39
36 } // namespace 40 } // namespace
37 41
38 HeartbeatSender::HeartbeatSender( 42 HeartbeatSender::HeartbeatSender(
39 const std::string& host_id, 43 const std::string& host_id,
40 SignalStrategy* signal_strategy, 44 SignalStrategy* signal_strategy,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 VLOG(1) << "Sending heartbeat stanza to " << kChromotingBotJid; 77 VLOG(1) << "Sending heartbeat stanza to " << kChromotingBotJid;
74 request_.reset(iq_sender_->SendIq( 78 request_.reset(iq_sender_->SendIq(
75 buzz::STR_SET, kChromotingBotJid, CreateHeartbeatMessage(), 79 buzz::STR_SET, kChromotingBotJid, CreateHeartbeatMessage(),
76 base::Bind(&HeartbeatSender::ProcessResponse, 80 base::Bind(&HeartbeatSender::ProcessResponse,
77 base::Unretained(this)))); 81 base::Unretained(this))));
78 } 82 }
79 83
80 void HeartbeatSender::ProcessResponse(const XmlElement* response) { 84 void HeartbeatSender::ProcessResponse(const XmlElement* response) {
81 std::string type = response->Attr(buzz::QN_TYPE); 85 std::string type = response->Attr(buzz::QN_TYPE);
82 if (type == buzz::STR_ERROR) { 86 if (type == buzz::STR_ERROR) {
87 const XmlElement* error_element =
88 response->FirstNamed(QName(remoting::protocol::kJabberNamespace,
Sergey Ulanov 2012/01/31 02:37:13 You can use buzz::NS_CLIENT here instead to be con
Lambros 2012/01/31 21:57:29 Done.
89 kErrorTag));
90 if (error_element) {
91 if (error_element->FirstNamed(QName(buzz::NS_STANZA, kNotFoundTag))) {
92 // TODO(lambroslambrou): Trigger an application-defined callback to
93 // shut down the host properly, instead of just exiting here.
Wez 2012/01/31 05:44:03 Create a Type-Cleanup bug for this and include the
Lambros 2012/01/31 21:57:29 Done.
94 LOG(ERROR) << "Received error: Host ID invalid";
95 exit(1);
Wez 2012/01/31 05:44:03 I think this should be _exit(1), so that destructo
Sergey Ulanov 2012/01/31 07:41:35 As I understand the only difference is that _exit(
Lambros 2012/01/31 21:57:29 I think exit() is fine here. It will run atexit()
96 }
97 }
98
83 LOG(ERROR) << "Received error in response to heartbeat: " 99 LOG(ERROR) << "Received error in response to heartbeat: "
84 << response->Str(); 100 << response->Str();
Sergey Ulanov 2012/01/31 02:37:13 revert this?
Lambros 2012/01/31 21:57:29 Done.
85 return; 101 return;
86 } 102 }
87 103
88 // This method must only be called for error or result stanzas. 104 // This method must only be called for error or result stanzas.
89 DCHECK_EQ(std::string(buzz::STR_RESULT), type); 105 DCHECK_EQ(std::string(buzz::STR_RESULT), type);
90 106
91 const XmlElement* result_element = 107 const XmlElement* result_element =
92 response->FirstNamed(QName(kChromotingXmlNamespace, kHeartbeatResultTag)); 108 response->FirstNamed(QName(kChromotingXmlNamespace, kHeartbeatResultTag));
93 if (result_element) { 109 if (result_element) {
94 const XmlElement* set_interval_element = 110 const XmlElement* set_interval_element =
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 QName(kChromotingXmlNamespace, kSignatureTimeAttr), time_str); 154 QName(kChromotingXmlNamespace, kSignatureTimeAttr), time_str);
139 155
140 std::string message = signal_strategy_->GetLocalJid() + ' ' + time_str; 156 std::string message = signal_strategy_->GetLocalJid() + ' ' + time_str;
141 std::string signature(key_pair_->GetSignature(message)); 157 std::string signature(key_pair_->GetSignature(message));
142 signature_tag->AddText(signature); 158 signature_tag->AddText(signature);
143 159
144 return signature_tag; 160 return signature_tag;
145 } 161 }
146 162
147 } // namespace remoting 163 } // namespace remoting
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698