style: adjust clang-format rules (#2186)
Co-authored-by: Vithorio Polten <reach@vithor.io>
This commit is contained in:
@@ -2,9 +2,13 @@
|
||||
* @file src/platform/macos/publish.cpp
|
||||
* @brief Definitions for publishing services on macOS.
|
||||
*/
|
||||
#include <dns_sd.h>
|
||||
// standard includes
|
||||
#include <thread>
|
||||
|
||||
// platform includes
|
||||
#include <dns_sd.h>
|
||||
|
||||
// local includes
|
||||
#include "src/logging.h"
|
||||
#include "src/network.h"
|
||||
#include "src/nvhttp.h"
|
||||
@@ -17,12 +21,13 @@ namespace platf::publish {
|
||||
/** @brief Custom deleter intended to be used for `std::unique_ptr<DNSServiceRef>`. */
|
||||
struct ServiceRefDeleter {
|
||||
typedef DNSServiceRef pointer; ///< Type of object to be deleted.
|
||||
void
|
||||
operator()(pointer serviceRef) {
|
||||
|
||||
void operator()(pointer serviceRef) {
|
||||
DNSServiceRefDeallocate(serviceRef);
|
||||
BOOST_LOG(info) << "Deregistered DNS service."sv;
|
||||
}
|
||||
};
|
||||
|
||||
/** @brief This class encapsulates the polling and deinitialization of our connection with
|
||||
* the mDNS service. Implements the `::platf::deinit_t` interface.
|
||||
*/
|
||||
@@ -37,25 +42,25 @@ namespace platf::publish {
|
||||
*/
|
||||
deinit_t(DNSServiceRef serviceRef):
|
||||
unique_ptr(serviceRef) {
|
||||
_thread = std::thread { [serviceRef, &_stopRequested = std::as_const(_stopRequested)]() {
|
||||
_thread = std::thread {[serviceRef, &_stopRequested = std::as_const(_stopRequested)]() {
|
||||
const auto socket = DNSServiceRefSockFD(serviceRef);
|
||||
while (!_stopRequested) {
|
||||
auto fdset = fd_set {};
|
||||
FD_ZERO(&fdset);
|
||||
FD_SET(socket, &fdset);
|
||||
auto timeout = timeval { .tv_sec = 3, .tv_usec = 0 }; // 3 second timeout
|
||||
auto timeout = timeval {.tv_sec = 3, .tv_usec = 0}; // 3 second timeout
|
||||
const auto ready = select(socket + 1, &fdset, nullptr, nullptr, &timeout);
|
||||
if (ready == -1) {
|
||||
BOOST_LOG(error) << "Failed to obtain response from DNS service."sv;
|
||||
break;
|
||||
}
|
||||
else if (ready != 0) {
|
||||
} else if (ready != 0) {
|
||||
DNSServiceProcessResult(serviceRef);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} };
|
||||
}};
|
||||
}
|
||||
|
||||
/** @brief Ensure that we gracefully finish polling the mDNS service before freeing our
|
||||
* connection to it.
|
||||
*/
|
||||
@@ -63,9 +68,9 @@ namespace platf::publish {
|
||||
_stopRequested = true;
|
||||
_thread.join();
|
||||
}
|
||||
|
||||
deinit_t(const deinit_t &) = delete;
|
||||
deinit_t &
|
||||
operator=(const deinit_t &) = delete;
|
||||
deinit_t &operator=(const deinit_t &) = delete;
|
||||
|
||||
private:
|
||||
std::thread _thread; ///< Thread for polling the mDNS service for a response.
|
||||
@@ -75,10 +80,7 @@ namespace platf::publish {
|
||||
/** @brief Callback that will be invoked when the mDNS service finishes registering our service.
|
||||
* @param errorCode Describes whether the registration was successful.
|
||||
*/
|
||||
void
|
||||
registrationCallback(DNSServiceRef /*serviceRef*/, DNSServiceFlags /*flags*/,
|
||||
DNSServiceErrorType errorCode, const char * /*name*/,
|
||||
const char * /*regtype*/, const char * /*domain*/, void * /*context*/) {
|
||||
void registrationCallback(DNSServiceRef /*serviceRef*/, DNSServiceFlags /*flags*/, DNSServiceErrorType errorCode, const char * /*name*/, const char * /*regtype*/, const char * /*domain*/, void * /*context*/) {
|
||||
if (errorCode != kDNSServiceErr_NoError) {
|
||||
BOOST_LOG(error) << "Failed to register DNS service: Error "sv << errorCode;
|
||||
return;
|
||||
@@ -98,8 +100,7 @@ namespace platf::publish {
|
||||
* which will manage polling for a response from the mDNS service, and then, when
|
||||
* deconstructed, will deregister the service.
|
||||
*/
|
||||
[[nodiscard]] std::unique_ptr<::platf::deinit_t>
|
||||
start() {
|
||||
[[nodiscard]] std::unique_ptr<::platf::deinit_t> start() {
|
||||
auto serviceRef = DNSServiceRef {};
|
||||
const auto status = DNSServiceRegister(
|
||||
&serviceRef,
|
||||
|
||||
Reference in New Issue
Block a user