SET(PC_FILE "askuser-notification.pc")
+PKG_CHECK_MODULES(ASKUSER_NOTIFICATION_DEP
+ REQUIRED
+ libsystemd
+ )
+
INCLUDE_DIRECTORIES(
${PROTOCOL_PATH}
+ ${ASKUSER_NOTIFICATION_DEP_INCLUDE_DIRS}
)
SET(ASKUSER_NOTIFICATION_SOURCES
VERSION ${ASKUSER_NOTIFICATION_VERSION}
)
-TARGET_LINK_LIBRARIES(${TARGET_ASKUSER_NOTIFICATION_LIB})
+TARGET_LINK_LIBRARIES(${TARGET_ASKUSER_NOTIFICATION_LIB} ${ASKUSER_NOTIFICATION_DEP_LIBRARIES})
TARGET_LINK_LIBRARIES(${TARGET_ASKUSER_NOTIFICATION_TEST} ${TARGET_ASKUSER_NOTIFICATION_LIB})
INSTALL(TARGETS ${TARGET_ASKUSER_NOTIFICATION_LIB}
#include <sys/un.h>
#include <unistd.h>
-#ifdef WITH_SYSTEMD
+#ifdef BUILD_WITH_SYSTEMD_DAEMON
#include <systemd/sd-daemon.h>
-#endif // WITH_SYSTEMD
+#endif // BUILD_WITH_SYSTEMD_DAEMON
#include <string>
#include <vector>
#include <sock.h>
-namespace {
-
-int getSocketFromSystemD() {
-#ifdef WITH_SYSTEMD
- int n = sd_listen_fds(0);
-
- if (n < 0)
- return -1;
-
- for (int fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START+n; ++fd)
- if (0 < sd_is_socket_unix(fd, getUnixSockType, 1, m_path.c_str(), 0))
- return fd;
-#endif // WITH_SYSTEMD
- return -1;
-}
-
-} // namespace Anonymous
-
namespace AskUser {
namespace Protocol {
return 0;
}
+int Sock::getSocketFromSystemD() {
+#ifdef BUILD_WITH_SYSTEMD_DAEMON
+ int n = sd_listen_fds(0);
+
+ if (n < 0)
+ return -1;
+
+ for (int fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START+n; ++fd)
+ if (0 < sd_is_socket_unix(fd, getUnixSockType(), 1, m_path.c_str(), 0))
+ return fd;
+#endif // BUILD_WITH_SYSTEMD_DAEMON
+ return -1;
+}
+
int Sock::connect(const std::string &path) {
if (m_fd != -1)
return -1;
int getType() const { return m_type; }
int getUnixSockType() const;
-
int connect(const std::string &path);
Sock accept();
void close();
int send(const RawBuffer &buffer);
private:
+ int getSocketFromSystemD();
+
Type m_type;
int m_fd;
std::string m_path;