|  | // 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. | 
|  |  | 
|  | #ifndef LIBWEAVE_SRC_PRIVET_DEVICE_DELEGATE_H_ | 
|  | #define LIBWEAVE_SRC_PRIVET_DEVICE_DELEGATE_H_ | 
|  |  | 
|  | #include <memory> | 
|  | #include <utility> | 
|  |  | 
|  | #include <base/time/time.h> | 
|  |  | 
|  | namespace weave { | 
|  | namespace privet { | 
|  |  | 
|  | // Interface to provide access to general information about device. | 
|  | class DeviceDelegate { | 
|  | public: | 
|  | DeviceDelegate(); | 
|  | virtual ~DeviceDelegate(); | 
|  |  | 
|  | // Returns HTTP ports for Privet. The first one is the primary port, | 
|  | // the second is the port for a pooling updates requests. The second value | 
|  | // could be 0. In this case the first port would be use for regular and for | 
|  | // updates requests. | 
|  | virtual std::pair<uint16_t, uint16_t> GetHttpEnpoint() const = 0; | 
|  |  | 
|  | // The same |GetHttpEnpoint| but for HTTPS. | 
|  | virtual std::pair<uint16_t, uint16_t> GetHttpsEnpoint() const = 0; | 
|  |  | 
|  | // Returns device update. | 
|  | virtual base::TimeDelta GetUptime() const = 0; | 
|  |  | 
|  | // Updates the HTTP port value. | 
|  | virtual void SetHttpPort(uint16_t port) = 0; | 
|  |  | 
|  | // Updates the HTTPS port value. | 
|  | virtual void SetHttpsPort(uint16_t port) = 0; | 
|  |  | 
|  | // Create default instance. | 
|  | static std::unique_ptr<DeviceDelegate> CreateDefault(uint16_t http_port, | 
|  | uint16_t https_port); | 
|  | }; | 
|  |  | 
|  | }  // namespace privet | 
|  | }  // namespace weave | 
|  |  | 
|  | #endif  // LIBWEAVE_SRC_PRIVET_DEVICE_DELEGATE_H_ |