blob: 552cbe210ae5014a4f30c07f05ccb931b4f61be1 [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka7ce499f2015-06-09 08:04:11 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Stefan Sauer2d16dfa2015-09-25 17:08:35 +02005#include "src/privet/device_delegate.h"
Vitaly Buka7ce499f2015-06-09 08:04:11 -07006
Vitaly Buka7ce499f2015-06-09 08:04:11 -07007#include <base/guid.h>
Alex Vakulenkoefee3a22015-11-17 15:08:38 -08008#include <weave/provider/task_runner.h>
Vitaly Buka7ce499f2015-06-09 08:04:11 -07009
Stefan Sauer2d16dfa2015-09-25 17:08:35 +020010#include "src/privet/constants.h"
Vitaly Buka7ce499f2015-06-09 08:04:11 -070011
Vitaly Bukab6f015a2015-07-09 14:59:23 -070012namespace weave {
13namespace privet {
Vitaly Buka7ce499f2015-06-09 08:04:11 -070014
15namespace {
16
17class DeviceDelegateImpl : public DeviceDelegate {
18 public:
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080019 DeviceDelegateImpl(provider::TaskRunner* task_runner,
20 uint16_t http_port,
21 uint16_t https_port,
22 base::TimeDelta http_request_timeout)
Vitaly Buka34668e72015-12-15 14:46:47 -080023 : task_runner_{task_runner},
24 http_request_timeout_{http_request_timeout},
25 http_port_{http_port},
26 https_port_{https_port} {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070027 ~DeviceDelegateImpl() override = default;
28
29 std::pair<uint16_t, uint16_t> GetHttpEnpoint() const override {
30 return std::make_pair(http_port_, http_port_);
31 }
32 std::pair<uint16_t, uint16_t> GetHttpsEnpoint() const override {
33 return std::make_pair(https_port_, https_port_);
34 }
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080035 base::TimeDelta GetHttpRequestTimeout() const override {
36 return http_request_timeout_;
37 }
Vitaly Buka7ce499f2015-06-09 08:04:11 -070038
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080039 void PostDelayedTask(const tracked_objects::Location& from_here,
40 const base::Closure& task,
41 base::TimeDelta delay) override {
42 task_runner_->PostDelayedTask(from_here, task, delay);
43 }
Vitaly Buka7ce499f2015-06-09 08:04:11 -070044
45 private:
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080046 provider::TaskRunner* task_runner_;
47 base::TimeDelta http_request_timeout_;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070048 uint16_t http_port_{0};
49 uint16_t https_port_{0};
Vitaly Buka7ce499f2015-06-09 08:04:11 -070050};
51
52} // namespace
53
Vitaly Buka4ebd3292015-09-23 18:04:17 -070054DeviceDelegate::DeviceDelegate() {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070055
Vitaly Buka4ebd3292015-09-23 18:04:17 -070056DeviceDelegate::~DeviceDelegate() {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070057
58// static
Vitaly Buka1f2e4f32015-10-08 10:13:52 -070059std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault(
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080060 provider::TaskRunner* task_runner,
Vitaly Buka1f2e4f32015-10-08 10:13:52 -070061 uint16_t http_port,
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080062 uint16_t https_port,
63 base::TimeDelta http_request_timeout) {
Vitaly Buka34668e72015-12-15 14:46:47 -080064 return std::unique_ptr<DeviceDelegate>(new DeviceDelegateImpl(
65 task_runner, http_port, https_port, http_request_timeout));
Vitaly Buka7ce499f2015-06-09 08:04:11 -070066}
67
Vitaly Bukab6f015a2015-07-09 14:59:23 -070068} // namespace privet
69} // namespace weave