#ifndef LTTNG_PIPE_H
#define LTTNG_PIPE_H
-#include <pthread.h>
#include <common/macros.hpp>
+#include <common/make-unique-wrapper.hpp>
+
+#include <pthread.h>
#include <sys/types.h>
enum lttng_pipe_state {
LTTNG_PIPE_STATE_CLOSED = 2,
};
+/* Close both side of pipe. */
+int lttng_pipe_close(struct lttng_pipe *pipe);
+
struct lttng_pipe {
+ static void _lttng_pipe_close_wrapper(lttng_pipe *pipe)
+ {
+ lttng_pipe_close(pipe);
+ }
+
+ using uptr = std::unique_ptr<
+ lttng_pipe,
+ lttng::details::create_unique_class<lttng_pipe, _lttng_pipe_close_wrapper>::deleter>;
+
/* Read: 0, Write: 1. */
int fd[2];
/*
int flags);
int lttng_pipe_write_close(struct lttng_pipe *pipe);
int lttng_pipe_read_close(struct lttng_pipe *pipe);
-/* Close both side of pipe. */
-int lttng_pipe_close(struct lttng_pipe *pipe);
void lttng_pipe_destroy(struct lttng_pipe *pipe);
ssize_t lttng_pipe_read(struct lttng_pipe *pipe, void *buf, size_t count);