|  | // 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 "src/privet/constants.h" | 
|  |  | 
|  | namespace weave { | 
|  | namespace privet { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | class DeviceDelegateImpl : public DeviceDelegate { | 
|  | public: | 
|  | DeviceDelegateImpl(uint16_t http_port, uint16_t https_port) | 
|  | : 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_; | 
|  | } | 
|  |  | 
|  | void SetHttpPort(uint16_t port) override { http_port_ = port; } | 
|  |  | 
|  | void SetHttpsPort(uint16_t port) override { https_port_ = port; } | 
|  |  | 
|  | private: | 
|  | 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( | 
|  | uint16_t http_port, | 
|  | uint16_t https_port) { | 
|  | return std::unique_ptr<DeviceDelegate>( | 
|  | new DeviceDelegateImpl(http_port, https_port)); | 
|  | } | 
|  |  | 
|  | }  // namespace privet | 
|  | }  // namespace weave |