blob: 9a05483e6d8bf27bac5a3602c274c394db186df6 [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)
23 : task_runner_{task_runner}, http_request_timeout_{http_request_timeout},
24 http_port_{http_port}, https_port_{https_port} {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070025 ~DeviceDelegateImpl() override = default;
26
27 std::pair<uint16_t, uint16_t> GetHttpEnpoint() const override {
28 return std::make_pair(http_port_, http_port_);
29 }
30 std::pair<uint16_t, uint16_t> GetHttpsEnpoint() const override {
31 return std::make_pair(https_port_, https_port_);
32 }
33 base::TimeDelta GetUptime() const override {
34 return base::Time::Now() - start_time_;
35 }
36
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080037 base::TimeDelta GetHttpRequestTimeout() const override {
38 return http_request_timeout_;
39 }
Vitaly Buka7ce499f2015-06-09 08:04:11 -070040
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080041 void PostDelayedTask(const tracked_objects::Location& from_here,
42 const base::Closure& task,
43 base::TimeDelta delay) override {
44 task_runner_->PostDelayedTask(from_here, task, delay);
45 }
Vitaly Buka7ce499f2015-06-09 08:04:11 -070046
47 private:
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080048 provider::TaskRunner* task_runner_;
49 base::TimeDelta http_request_timeout_;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070050 uint16_t http_port_{0};
51 uint16_t https_port_{0};
52 base::Time start_time_{base::Time::Now()};
53};
54
55} // namespace
56
Vitaly Buka4ebd3292015-09-23 18:04:17 -070057DeviceDelegate::DeviceDelegate() {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070058
Vitaly Buka4ebd3292015-09-23 18:04:17 -070059DeviceDelegate::~DeviceDelegate() {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070060
61// static
Vitaly Buka1f2e4f32015-10-08 10:13:52 -070062std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault(
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080063 provider::TaskRunner* task_runner,
Vitaly Buka1f2e4f32015-10-08 10:13:52 -070064 uint16_t http_port,
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080065 uint16_t https_port,
66 base::TimeDelta http_request_timeout) {
Vitaly Buka1f2e4f32015-10-08 10:13:52 -070067 return std::unique_ptr<DeviceDelegate>(
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080068 new DeviceDelegateImpl(task_runner, http_port, https_port,
69 http_request_timeout));
Vitaly Buka7ce499f2015-06-09 08:04:11 -070070}
71
Vitaly Bukab6f015a2015-07-09 14:59:23 -070072} // namespace privet
73} // namespace weave