blob: 3f13b22e21b688c45d1e343d582a0e2b6a0acf72 [file] [log] [blame]
// 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_