| // Copyright 2019 The Chromium 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 DISCOVERY_MDNS_MDNS_SENDER_H_ |
| #define DISCOVERY_MDNS_MDNS_SENDER_H_ |
| |
| #include "platform/api/udp_socket.h" |
| #include "platform/base/error.h" |
| #include "platform/base/ip_address.h" |
| |
| namespace openscreen { |
| namespace discovery { |
| |
| class MdnsMessage; |
| |
| class MdnsSender { |
| public: |
| // MdnsSender does not own |socket| and expects that its lifetime exceeds the |
| // lifetime of MdnsSender. |
| explicit MdnsSender(UdpSocket* socket); |
| MdnsSender(const MdnsSender& other) = delete; |
| MdnsSender(MdnsSender&& other) noexcept = delete; |
| virtual ~MdnsSender(); |
| |
| MdnsSender& operator=(const MdnsSender& other) = delete; |
| MdnsSender& operator=(MdnsSender&& other) noexcept = delete; |
| |
| virtual Error SendMulticast(const MdnsMessage& message); |
| virtual Error SendMessage(const MdnsMessage& message, |
| const IPEndpoint& endpoint); |
| |
| void OnSendError(UdpSocket* socket, Error error); |
| |
| private: |
| UdpSocket* const socket_; |
| }; |
| |
| } // namespace discovery |
| } // namespace openscreen |
| |
| #endif // DISCOVERY_MDNS_MDNS_SENDER_H_ |