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/copresence/rpc/rpc_handler.h" | 5 #include "components/copresence/rpc/rpc_handler.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 GetDeviceCapabilities(*request).release()); | 255 GetDeviceCapabilities(*request).release()); |
256 SendServerRequest(kReportRequestRpcName, | 256 SendServerRequest(kReportRequestRpcName, |
257 app_id, | 257 app_id, |
258 request.Pass(), | 258 request.Pass(), |
259 // On destruction, this request will be cancelled. | 259 // On destruction, this request will be cancelled. |
260 base::Bind(&RpcHandler::ReportResponseHandler, | 260 base::Bind(&RpcHandler::ReportResponseHandler, |
261 base::Unretained(this), | 261 base::Unretained(this), |
262 status_callback)); | 262 status_callback)); |
263 } | 263 } |
264 | 264 |
265 void RpcHandler::ReportTokens(TokenMedium medium, | 265 void RpcHandler::ReportTokens(const std::vector<FullToken>& tokens) { |
266 const std::vector<std::string>& tokens) { | |
267 DCHECK_EQ(medium, AUDIO_ULTRASOUND_PASSBAND); | |
268 DCHECK(!tokens.empty()); | 266 DCHECK(!tokens.empty()); |
269 | 267 |
270 scoped_ptr<ReportRequest> request(new ReportRequest); | 268 scoped_ptr<ReportRequest> request(new ReportRequest); |
271 for (size_t i = 0; i < tokens.size(); ++i) { | 269 for (size_t i = 0; i < tokens.size(); ++i) { |
272 const std::string& token = ToUrlSafe(tokens[i]); | 270 const std::string& token = ToUrlSafe(tokens[i].token); |
273 if (invalid_audio_token_cache_.HasKey(token)) | 271 if (invalid_audio_token_cache_.HasKey(token)) |
274 continue; | 272 continue; |
275 | 273 |
276 DVLOG(3) << "Sending token " << token << " to server."; | 274 DVLOG(3) << "Sending token " << token << " to server."; |
277 | 275 |
278 TokenObservation* token_observation = | 276 TokenObservation* token_observation = |
279 request->mutable_update_signals_request()->add_token_observation(); | 277 request->mutable_update_signals_request()->add_token_observation(); |
280 token_observation->set_token_id(token); | 278 token_observation->set_token_id(token); |
281 | 279 |
282 TokenSignals* signals = token_observation->add_signals(); | 280 TokenSignals* signals = token_observation->add_signals(); |
283 signals->set_medium(medium); | 281 signals->set_medium(tokens[i].audible ? AUDIO_AUDIBLE_DTMF |
| 282 : AUDIO_ULTRASOUND_PASSBAND); |
284 signals->set_observed_time_millis(base::Time::Now().ToJsTime()); | 283 signals->set_observed_time_millis(base::Time::Now().ToJsTime()); |
285 } | 284 } |
286 SendReportRequest(request.Pass()); | 285 SendReportRequest(request.Pass()); |
287 } | 286 } |
288 | 287 |
289 void RpcHandler::ConnectToWhispernet() { | 288 void RpcHandler::ConnectToWhispernet() { |
290 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); | 289 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); |
291 | 290 |
292 // |directive_handler_| will be destructed with us, so unretained is safe. | 291 // |directive_handler_| will be destructed with us, so unretained is safe. |
293 directive_handler_.reset(new DirectiveHandler); | 292 directive_handler_.reset(new DirectiveHandler); |
294 directive_handler_->Initialize( | 293 directive_handler_->Initialize( |
295 base::Bind(&WhispernetClient::DecodeSamples, | 294 base::Bind(&WhispernetClient::DecodeSamples, |
296 base::Unretained(whispernet_client)), | 295 base::Unretained(whispernet_client)), |
297 base::Bind(&RpcHandler::AudioDirectiveListToWhispernetConnector, | 296 base::Bind(&RpcHandler::AudioDirectiveListToWhispernetConnector, |
298 base::Unretained(this))); | 297 base::Unretained(this))); |
299 | 298 |
300 whispernet_client->RegisterTokensCallback( | 299 whispernet_client->RegisterTokensCallback( |
301 base::Bind(&RpcHandler::ReportTokens, | 300 base::Bind(&RpcHandler::ReportTokens, |
302 // On destruction, this callback will be disconnected. | 301 // On destruction, this callback will be disconnected. |
303 base::Unretained(this), | 302 base::Unretained(this))); |
304 AUDIO_ULTRASOUND_PASSBAND)); | |
305 } | 303 } |
306 | 304 |
307 // Private methods | 305 // Private methods |
308 | 306 |
309 void RpcHandler::RegisterResponseHandler( | 307 void RpcHandler::RegisterResponseHandler( |
310 const SuccessCallback& init_done_callback, | 308 const SuccessCallback& init_done_callback, |
311 HttpPost* completed_post, | 309 HttpPost* completed_post, |
312 int http_status_code, | 310 int http_status_code, |
313 const std::string& response_data) { | 311 const std::string& response_data) { |
314 if (completed_post) { | 312 if (completed_post) { |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 bool audible, | 500 bool audible, |
503 const WhispernetClient::SamplesCallback& samples_callback) { | 501 const WhispernetClient::SamplesCallback& samples_callback) { |
504 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); | 502 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); |
505 if (whispernet_client) { | 503 if (whispernet_client) { |
506 whispernet_client->RegisterSamplesCallback(samples_callback); | 504 whispernet_client->RegisterSamplesCallback(samples_callback); |
507 whispernet_client->EncodeToken(token, audible); | 505 whispernet_client->EncodeToken(token, audible); |
508 } | 506 } |
509 } | 507 } |
510 | 508 |
511 } // namespace copresence | 509 } // namespace copresence |
OLD | NEW |