OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "components/invalidation/impl/push_client_channel.h" | 5 #include "components/invalidation/impl/push_client_channel.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "build/build_config.h" |
8 #include "components/invalidation/impl/notifier_reason_util.h" | 9 #include "components/invalidation/impl/notifier_reason_util.h" |
9 #include "google/cacheinvalidation/client_gateway.pb.h" | 10 #include "google/cacheinvalidation/client_gateway.pb.h" |
10 #include "google/cacheinvalidation/types.pb.h" | 11 #include "google/cacheinvalidation/types.pb.h" |
11 #include "jingle/notifier/listener/push_client.h" | 12 #include "jingle/notifier/listener/push_client.h" |
12 | 13 |
13 namespace syncer { | 14 namespace syncer { |
14 | 15 |
15 namespace { | 16 namespace { |
16 | 17 |
17 const char kBotJid[] = "tango@bot.talk.google.com"; | 18 const char kBotJid[] = "tango@bot.talk.google.com"; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 void PushClientChannel::OnNotificationsDisabled( | 78 void PushClientChannel::OnNotificationsDisabled( |
78 notifier::NotificationsDisabledReason reason) { | 79 notifier::NotificationsDisabledReason reason) { |
79 NotifyNetworkStatusChange(false); | 80 NotifyNetworkStatusChange(false); |
80 NotifyChannelStateChange(FromNotifierReason(reason)); | 81 NotifyChannelStateChange(FromNotifierReason(reason)); |
81 } | 82 } |
82 | 83 |
83 void PushClientChannel::OnIncomingNotification( | 84 void PushClientChannel::OnIncomingNotification( |
84 const notifier::Notification& notification) { | 85 const notifier::Notification& notification) { |
85 std::string message; | 86 std::string message; |
86 std::string service_context; | 87 std::string service_context; |
87 int64 scheduling_hash; | 88 int64_t scheduling_hash; |
88 if (!DecodeMessage( | 89 if (!DecodeMessage( |
89 notification.data, &message, &service_context, &scheduling_hash)) { | 90 notification.data, &message, &service_context, &scheduling_hash)) { |
90 DLOG(ERROR) << "Could not parse ClientGatewayMessage"; | 91 DLOG(ERROR) << "Could not parse ClientGatewayMessage"; |
91 return; | 92 return; |
92 } | 93 } |
93 if (DeliverIncomingMessage(message)) { | 94 if (DeliverIncomingMessage(message)) { |
94 service_context_ = service_context; | 95 service_context_ = service_context; |
95 scheduling_hash_ = scheduling_hash; | 96 scheduling_hash_ = scheduling_hash; |
96 } | 97 } |
97 } | 98 } |
98 | 99 |
99 const std::string& PushClientChannel::GetServiceContextForTest() const { | 100 const std::string& PushClientChannel::GetServiceContextForTest() const { |
100 return service_context_; | 101 return service_context_; |
101 } | 102 } |
102 | 103 |
103 int64 PushClientChannel::GetSchedulingHashForTest() const { | 104 int64_t PushClientChannel::GetSchedulingHashForTest() const { |
104 return scheduling_hash_; | 105 return scheduling_hash_; |
105 } | 106 } |
106 | 107 |
107 std::string PushClientChannel::EncodeMessageForTest( | 108 std::string PushClientChannel::EncodeMessageForTest( |
108 const std::string& message, | 109 const std::string& message, |
109 const std::string& service_context, | 110 const std::string& service_context, |
110 int64 scheduling_hash) { | 111 int64_t scheduling_hash) { |
111 std::string encoded_message; | 112 std::string encoded_message; |
112 EncodeMessage(&encoded_message, message, service_context, scheduling_hash); | 113 EncodeMessage(&encoded_message, message, service_context, scheduling_hash); |
113 return encoded_message; | 114 return encoded_message; |
114 } | 115 } |
115 | 116 |
116 bool PushClientChannel::DecodeMessageForTest(const std::string& data, | 117 bool PushClientChannel::DecodeMessageForTest(const std::string& data, |
117 std::string* message, | 118 std::string* message, |
118 std::string* service_context, | 119 std::string* service_context, |
119 int64* scheduling_hash) { | 120 int64_t* scheduling_hash) { |
120 return DecodeMessage(data, message, service_context, scheduling_hash); | 121 return DecodeMessage(data, message, service_context, scheduling_hash); |
121 } | 122 } |
122 | 123 |
123 void PushClientChannel::EncodeMessage(std::string* encoded_message, | 124 void PushClientChannel::EncodeMessage(std::string* encoded_message, |
124 const std::string& message, | 125 const std::string& message, |
125 const std::string& service_context, | 126 const std::string& service_context, |
126 int64 scheduling_hash) { | 127 int64_t scheduling_hash) { |
127 ipc::invalidation::ClientGatewayMessage envelope; | 128 ipc::invalidation::ClientGatewayMessage envelope; |
128 envelope.set_is_client_to_server(true); | 129 envelope.set_is_client_to_server(true); |
129 if (!service_context.empty()) { | 130 if (!service_context.empty()) { |
130 envelope.set_service_context(service_context); | 131 envelope.set_service_context(service_context); |
131 envelope.set_rpc_scheduling_hash(scheduling_hash); | 132 envelope.set_rpc_scheduling_hash(scheduling_hash); |
132 } | 133 } |
133 envelope.set_network_message(message); | 134 envelope.set_network_message(message); |
134 envelope.SerializeToString(encoded_message); | 135 envelope.SerializeToString(encoded_message); |
135 } | 136 } |
136 | 137 |
137 bool PushClientChannel::DecodeMessage(const std::string& data, | 138 bool PushClientChannel::DecodeMessage(const std::string& data, |
138 std::string* message, | 139 std::string* message, |
139 std::string* service_context, | 140 std::string* service_context, |
140 int64* scheduling_hash) { | 141 int64_t* scheduling_hash) { |
141 ipc::invalidation::ClientGatewayMessage envelope; | 142 ipc::invalidation::ClientGatewayMessage envelope; |
142 if (!envelope.ParseFromString(data)) { | 143 if (!envelope.ParseFromString(data)) { |
143 return false; | 144 return false; |
144 } | 145 } |
145 *message = envelope.network_message(); | 146 *message = envelope.network_message(); |
146 if (envelope.has_service_context()) { | 147 if (envelope.has_service_context()) { |
147 *service_context = envelope.service_context(); | 148 *service_context = envelope.service_context(); |
148 } | 149 } |
149 if (envelope.has_rpc_scheduling_hash()) { | 150 if (envelope.has_rpc_scheduling_hash()) { |
150 *scheduling_hash = envelope.rpc_scheduling_hash(); | 151 *scheduling_hash = envelope.rpc_scheduling_hash(); |
151 } | 152 } |
152 return true; | 153 return true; |
153 } | 154 } |
154 | 155 |
155 scoped_ptr<base::DictionaryValue> PushClientChannel::CollectDebugData() const { | 156 scoped_ptr<base::DictionaryValue> PushClientChannel::CollectDebugData() const { |
156 scoped_ptr<base::DictionaryValue> status(new base::DictionaryValue); | 157 scoped_ptr<base::DictionaryValue> status(new base::DictionaryValue); |
157 status->SetString("PushClientChannel.NetworkChannel", "Push Client"); | 158 status->SetString("PushClientChannel.NetworkChannel", "Push Client"); |
158 status->SetInteger("PushClientChannel.SentMessages", sent_messages_count_); | 159 status->SetInteger("PushClientChannel.SentMessages", sent_messages_count_); |
159 status->SetInteger("PushClientChannel.ReceivedMessages", | 160 status->SetInteger("PushClientChannel.ReceivedMessages", |
160 SyncNetworkChannel::GetReceivedMessagesCount()); | 161 SyncNetworkChannel::GetReceivedMessagesCount()); |
161 return status.Pass(); | 162 return status.Pass(); |
162 } | 163 } |
163 | 164 |
164 } // namespace syncer | 165 } // namespace syncer |
OLD | NEW |