#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);
+void lttng_pipe_destroy(struct lttng_pipe *pipe);
+
struct lttng_pipe {
+ using uptr = std::unique_ptr<
+ lttng_pipe,
+ lttng::memory::create_deleter_class<lttng_pipe, lttng_pipe_destroy>::deleter>;
+
/* Read: 0, Write: 1. */
int fd[2];
/*
}
struct lttng_pipe *lttng_pipe_open(int flags);
-struct lttng_pipe *lttng_pipe_named_open(const char *path, mode_t mode,
- int flags);
+struct lttng_pipe *lttng_pipe_named_open(const char *path, mode_t mode, 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);
-ssize_t lttng_pipe_write(struct lttng_pipe *pipe, const void *buf,
- size_t count);
+ssize_t lttng_pipe_write(struct lttng_pipe *pipe, const void *buf, size_t count);
/* Returns and releases the read end of the pipe. */
int lttng_pipe_release_readfd(struct lttng_pipe *pipe);
/* Returns and releases the write end of the pipe. */