Home | History | Annotate | Download | only in privet
      1 // Copyright 2015 The Weave Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "src/privet/device_delegate.h"
      6 
      7 #include <base/guid.h>
      8 #include <weave/provider/task_runner.h>
      9 
     10 #include "src/privet/constants.h"
     11 
     12 namespace weave {
     13 namespace privet {
     14 
     15 namespace {
     16 
     17 class DeviceDelegateImpl : public DeviceDelegate {
     18  public:
     19   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},
     24         http_request_timeout_{http_request_timeout},
     25         http_port_{http_port},
     26         https_port_{https_port} {}
     27   ~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   }
     35   base::TimeDelta GetHttpRequestTimeout() const override {
     36     return http_request_timeout_;
     37   }
     38 
     39   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   }
     44 
     45  private:
     46   provider::TaskRunner* task_runner_;
     47   base::TimeDelta http_request_timeout_;
     48   uint16_t http_port_{0};
     49   uint16_t https_port_{0};
     50 };
     51 
     52 }  // namespace
     53 
     54 DeviceDelegate::DeviceDelegate() {}
     55 
     56 DeviceDelegate::~DeviceDelegate() {}
     57 
     58 // static
     59 std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault(
     60     provider::TaskRunner* task_runner,
     61     uint16_t http_port,
     62     uint16_t https_port,
     63     base::TimeDelta http_request_timeout) {
     64   return std::unique_ptr<DeviceDelegate>(new DeviceDelegateImpl(
     65       task_runner, http_port, https_port, http_request_timeout));
     66 }
     67 
     68 }  // namespace privet
     69 }  // namespace weave
     70