| // Copyright 2015 The Weave Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "src/privet/device_delegate.h" | 
 |  | 
 | #include <base/guid.h> | 
 | #include <weave/provider/task_runner.h> | 
 |  | 
 | #include "src/privet/constants.h" | 
 |  | 
 | namespace weave { | 
 | namespace privet { | 
 |  | 
 | namespace { | 
 |  | 
 | class DeviceDelegateImpl : public DeviceDelegate { | 
 |  public: | 
 |   DeviceDelegateImpl(provider::TaskRunner* task_runner, | 
 |                      uint16_t http_port, | 
 |                      uint16_t https_port, | 
 |                      base::TimeDelta http_request_timeout) | 
 |       : task_runner_{task_runner}, http_request_timeout_{http_request_timeout}, | 
 |         http_port_{http_port}, https_port_{https_port} {} | 
 |   ~DeviceDelegateImpl() override = default; | 
 |  | 
 |   std::pair<uint16_t, uint16_t> GetHttpEnpoint() const override { | 
 |     return std::make_pair(http_port_, http_port_); | 
 |   } | 
 |   std::pair<uint16_t, uint16_t> GetHttpsEnpoint() const override { | 
 |     return std::make_pair(https_port_, https_port_); | 
 |   } | 
 |   base::TimeDelta GetUptime() const override { | 
 |     return base::Time::Now() - start_time_; | 
 |   } | 
 |  | 
 |   base::TimeDelta GetHttpRequestTimeout() const override { | 
 |     return http_request_timeout_; | 
 |   } | 
 |  | 
 |   void PostDelayedTask(const tracked_objects::Location& from_here, | 
 |                        const base::Closure& task, | 
 |                        base::TimeDelta delay) override { | 
 |     task_runner_->PostDelayedTask(from_here, task, delay); | 
 |   } | 
 |  | 
 |  private: | 
 |   provider::TaskRunner* task_runner_; | 
 |   base::TimeDelta http_request_timeout_; | 
 |   uint16_t http_port_{0}; | 
 |   uint16_t https_port_{0}; | 
 |   base::Time start_time_{base::Time::Now()}; | 
 | }; | 
 |  | 
 | }  // namespace | 
 |  | 
 | DeviceDelegate::DeviceDelegate() {} | 
 |  | 
 | DeviceDelegate::~DeviceDelegate() {} | 
 |  | 
 | // static | 
 | std::unique_ptr<DeviceDelegate> DeviceDelegate::CreateDefault( | 
 |     provider::TaskRunner* task_runner, | 
 |     uint16_t http_port, | 
 |     uint16_t https_port, | 
 |     base::TimeDelta http_request_timeout) { | 
 |   return std::unique_ptr<DeviceDelegate>( | 
 |       new DeviceDelegateImpl(task_runner, http_port, https_port, | 
 |                              http_request_timeout)); | 
 | } | 
 |  | 
 | }  // namespace privet | 
 | }  // namespace weave |