| // 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_PUBLISHER_H_ |
| #define LIBWEAVE_SRC_PRIVET_PUBLISHER_H_ |
| |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include <base/macros.h> |
| |
| namespace weave { |
| |
| namespace provider { |
| class DnsServiceDiscovery; |
| } |
| |
| namespace privet { |
| |
| class CloudDelegate; |
| class DeviceDelegate; |
| class WifiDelegate; |
| |
| // Publishes privet service on DNS-SD. |
| class Publisher { |
| public: |
| Publisher(const DeviceDelegate* device, |
| const CloudDelegate* cloud, |
| const WifiDelegate* wifi, |
| provider::DnsServiceDiscovery* dns_sd); |
| ~Publisher(); |
| |
| // Updates published information. Removes service if HTTP is not alive. |
| void Update(); |
| |
| private: |
| void ExposeService(); |
| void RemoveService(); |
| |
| provider::DnsServiceDiscovery* dns_sd_{nullptr}; |
| |
| const DeviceDelegate* device_{nullptr}; |
| const CloudDelegate* cloud_{nullptr}; |
| const WifiDelegate* wifi_{nullptr}; |
| |
| std::pair<uint16_t, std::vector<std::string>> published_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Publisher); |
| }; |
| |
| } // namespace privet |
| } // namespace weave |
| |
| #endif // LIBWEAVE_SRC_PRIVET_PUBLISHER_H_ |