| // 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_ |