25 int pipe_backchannel[2];
26 int pipe_terminate[2];
39 struct pollfd *watch_fds =
static_cast<struct pollfd *
>(
40 smalloc(2 *
sizeof(
struct pollfd)));
42 watch_fds[0].events = POLLIN | POLLPRI;
43 watch_fds[0].revents = 0;
45 watch_fds[1].events = POLLIN | POLLPRI;
46 watch_fds[1].revents = 0;
48 const int retval = poll(watch_fds, 2, -1);
54 if (watch_fds[0].revents)
58 if (watch_fds[1].revents) {
59 watch_fds[1].revents = 0;
81 struct pollfd *watch_fds =
static_cast<struct pollfd *
>(
82 smalloc(2 *
sizeof(
struct pollfd)));
84 watch_fds[0].events = POLLIN | POLLPRI;
85 watch_fds[0].revents = 0;
87 watch_fds[1].events = POLLIN | POLLPRI;
88 watch_fds[1].revents = 0;
90 const int retval = poll(watch_fds, 2, -1);
96 if (watch_fds[0].revents)
100 if (watch_fds[1].revents) {
101 if ((watch_fds[1].revents & POLLERR) || (watch_fds[1].revents & POLLHUP)
102 || (watch_fds[1].revents & POLLNVAL)) {
106 watch_fds[1].revents = 0;
124 const string &repository_name) {
133 static_cast<void *>(handle));
144 const string &repository_name) {
153 static_cast<void *>(handle));
160 const char terminate =
'T';
static void * MainWatchdogListener(void *data)
assert((mem||(size==0))&&"Out Of Memory")
void MakePipe(int pipe_fd[2])
CatalogManager * catalog_manager
ListenerHandle * RegisterWatchdogListener(QuotaManager *quota_manager, const string &repository_name)
QuotaManager * quota_manager
pthread_t thread_listener
ListenerHandle * RegisterUnpinListener(QuotaManager *quota_manager, CatalogManager *catalog_manager, const string &repository_name)
virtual void RegisterBackChannel(int back_channel[2], const std::string &channel_id)=0
virtual void UnregisterBackChannel(int back_channel[2], const std::string &channel_id)=0
void UnregisterListener(ListenerHandle *handle)
static void * MainUnpinListener(void *data)
void WritePipe(int fd, const void *buf, size_t nbyte)
void ReadPipe(int fd, void *buf, size_t nbyte)
void ClosePipe(int pipe_fd[2])
CVMFS_EXPORT void LogCvmfs(const LogSource source, const int mask, const char *format,...)