mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-01 10:21:46 +02:00
fixed Avahi
This commit is contained in:
parent
c6fcadfbd5
commit
7715f3bbd3
3 changed files with 13 additions and 15 deletions
|
@ -19,7 +19,7 @@ endif
|
||||||
ifeq ($(TARGET), OPENWRT)
|
ifeq ($(TARGET), OPENWRT)
|
||||||
|
|
||||||
STRIP = echo
|
STRIP = echo
|
||||||
CXXFLAGS += -DNO_CPP11_STRING -pthread
|
CXXFLAGS += -DNO_CPP11_STRING -DHAS_AVAHI -pthread
|
||||||
LDFLAGS = -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -latomic
|
LDFLAGS = -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -latomic
|
||||||
OBJ += publishAvahi.o
|
OBJ += publishAvahi.o
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ else ifeq ($(TARGET), FREEBSD)
|
||||||
|
|
||||||
CXX = /usr/local/bin/g++
|
CXX = /usr/local/bin/g++
|
||||||
STRIP = echo
|
STRIP = echo
|
||||||
CXXFLAGS += -DNO_CPP11_STRING -DFREEBSD -pthread
|
CXXFLAGS += -DNO_CPP11_STRING -DFREEBSD -DHAS_AVAHI -pthread
|
||||||
LDFLAGS = -lrt -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++
|
LDFLAGS = -lrt -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++
|
||||||
OBJ += publishAvahi.o
|
OBJ += publishAvahi.o
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ else
|
||||||
|
|
||||||
CXX = /usr/bin/g++
|
CXX = /usr/bin/g++
|
||||||
STRIP = strip
|
STRIP = strip
|
||||||
CXXFLAGS += -pthread
|
CXXFLAGS += -DHAS_AVAHI -pthread
|
||||||
LDFLAGS = -lrt -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++
|
LDFLAGS = -lrt -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common -static-libgcc -static-libstdc++
|
||||||
OBJ += publishAvahi.o
|
OBJ += publishAvahi.o
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ static AvahiEntryGroup *group;
|
||||||
static AvahiSimplePoll *simple_poll;
|
static AvahiSimplePoll *simple_poll;
|
||||||
static char* name;
|
static char* name;
|
||||||
|
|
||||||
PublishAvahi::PublishAvahi(const std::string& serviceName) : PublishmDNS(serviceName)
|
PublishAvahi::PublishAvahi(const std::string& serviceName) : PublishmDNS(serviceName),
|
||||||
client(NULL), active_(false)
|
client_(NULL), active_(false)
|
||||||
{
|
{
|
||||||
group = NULL;
|
group = NULL;
|
||||||
simple_poll = NULL;
|
simple_poll = NULL;
|
||||||
|
@ -40,9 +40,6 @@ void PublishAvahi::publish(const std::vector<mDNSService>& services)
|
||||||
{
|
{
|
||||||
this->services = services;
|
this->services = services;
|
||||||
|
|
||||||
AvahiClient *client = NULL;
|
|
||||||
int error;
|
|
||||||
|
|
||||||
/* Allocate main loop object */
|
/* Allocate main loop object */
|
||||||
if (!(simple_poll = avahi_simple_poll_new()))
|
if (!(simple_poll = avahi_simple_poll_new()))
|
||||||
{
|
{
|
||||||
|
@ -50,10 +47,11 @@ void PublishAvahi::publish(const std::vector<mDNSService>& services)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate a new client */
|
/* Allocate a new client */
|
||||||
client = avahi_client_new(avahi_simple_poll_get(simple_poll), AVAHI_CLIENT_IGNORE_USER_CONFIG, client_callback, this, &error);
|
int error;
|
||||||
|
client_ = avahi_client_new(avahi_simple_poll_get(simple_poll), AVAHI_CLIENT_IGNORE_USER_CONFIG, client_callback, this, &error);
|
||||||
|
|
||||||
/* Check wether creating the client object succeeded */
|
/* Check wether creating the client object succeeded */
|
||||||
if (!client)
|
if (!client_)
|
||||||
{
|
{
|
||||||
logE << "Failed to create client: " << avahi_strerror(error) << "\n";
|
logE << "Failed to create client: " << avahi_strerror(error) << "\n";
|
||||||
}
|
}
|
||||||
|
@ -74,8 +72,8 @@ PublishAvahi::~PublishAvahi()
|
||||||
active_ = false;
|
active_ = false;
|
||||||
pollThread_.join();
|
pollThread_.join();
|
||||||
|
|
||||||
if (client)
|
if (client_)
|
||||||
avahi_client_free(client);
|
avahi_client_free(client_);
|
||||||
|
|
||||||
if (simple_poll)
|
if (simple_poll)
|
||||||
avahi_simple_poll_free(simple_poll);
|
avahi_simple_poll_free(simple_poll);
|
||||||
|
@ -174,7 +172,7 @@ void PublishAvahi::create_services(AvahiClient *c)
|
||||||
/* Add the same service for BSD LPR */
|
/* Add the same service for BSD LPR */
|
||||||
for (size_t n=0; n<services.size(); ++n)
|
for (size_t n=0; n<services.size(); ++n)
|
||||||
{
|
{
|
||||||
if ((ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, services[n].proto_, AvahiPublishFlags(0), name, services[n].name_.c_str(), NULL, NULL, services[n].port_, NULL)) < 0)
|
if ((ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, AvahiPublishFlags(0), name, services[n].name_.c_str(), NULL, NULL, services[n].port_, NULL)) < 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (ret == AVAHI_ERR_COLLISION)
|
if (ret == AVAHI_ERR_COLLISION)
|
||||||
|
|
|
@ -48,9 +48,9 @@ private:
|
||||||
static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata);
|
static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata);
|
||||||
static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata);
|
static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata);
|
||||||
void create_services(AvahiClient *c);
|
void create_services(AvahiClient *c);
|
||||||
AvahiClient* client;
|
|
||||||
std::thread pollThread_;
|
|
||||||
void worker();
|
void worker();
|
||||||
|
AvahiClient* client_;
|
||||||
|
std::thread pollThread_;
|
||||||
std::atomic<bool> active_;
|
std::atomic<bool> active_;
|
||||||
std::vector<mDNSService> services;
|
std::vector<mDNSService> services;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue