projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: file-descriptor: missing include guards
[lttng-tools.git]
/
src
/
common
/
file-descriptor.hpp
diff --git
a/src/common/file-descriptor.hpp
b/src/common/file-descriptor.hpp
index 54c2e182a1bb352e5395990ae486be093d5ef4e9..e8ddfe7a144815c15c8b729fd53027e0e923bd9d 100644
(file)
--- a/
src/common/file-descriptor.hpp
+++ b/
src/common/file-descriptor.hpp
@@
-5,6
+5,9
@@
*
*/
*
*/
+#ifndef LTTNG_FILE_DESCRIPTOR_HPP
+#define LTTNG_FILE_DESCRIPTOR_HPP
+
#include <common/error.hpp>
#include <common/format.hpp>
#include <common/error.hpp>
#include <common/format.hpp>
@@
-16,32
+19,36
@@
namespace lttng {
/*
* RAII wrapper around a UNIX file descriptor. A file_descriptor's underlying
/*
* RAII wrapper around a UNIX file descriptor. A file_descriptor's underlying
- * file descriptor
+ * file descriptor
.
*/
class file_descriptor {
public:
*/
class file_descriptor {
public:
- explicit file_descriptor(int raw_fd) noexcept : _raw_fd{raw_fd}
+ file_descriptor()
+ {
+ }
+
+ explicit file_descriptor(int raw_fd) noexcept : _raw_fd{ raw_fd }
{
LTTNG_ASSERT(_is_valid_fd(_raw_fd));
}
file_descriptor(const file_descriptor&) = delete;
{
LTTNG_ASSERT(_is_valid_fd(_raw_fd));
}
file_descriptor(const file_descriptor&) = delete;
+ file_descriptor& operator=(const file_descriptor&) = delete;
+ file_descriptor& operator=(file_descriptor&& other)
+ {
+ _cleanup();
+ std::swap(_raw_fd, other._raw_fd);
+ return *this;
+ }
- file_descriptor(file_descriptor&& other) noexcept
{
- LTTNG_ASSERT(_is_valid_fd(_raw_fd));
+ file_descriptor(file_descriptor&& other) noexcept
+ {
std::swap(_raw_fd, other._raw_fd);
}
~file_descriptor()
{
std::swap(_raw_fd, other._raw_fd);
}
~file_descriptor()
{
- if (!_is_valid_fd(_raw_fd)) {
- return;
- }
-
- const auto ret = ::close(_raw_fd);
- if (ret) {
- PERROR("Failed to close file descriptor: fd=%i", _raw_fd);
- }
+ _cleanup();
}
int fd() const noexcept
}
int fd() const noexcept
@@
-56,7
+63,23
@@
private:
return fd >= 0;
}
return fd >= 0;
}
+ void _cleanup()
+ {
+ if (!_is_valid_fd(_raw_fd)) {
+ return;
+ }
+
+ const auto ret = ::close(_raw_fd);
+
+ _raw_fd = -1;
+ if (ret) {
+ PERROR("Failed to close file descriptor: fd=%i", _raw_fd);
+ }
+ }
+
int _raw_fd = -1;
};
} /* namespace lttng */
int _raw_fd = -1;
};
} /* namespace lttng */
+
+#endif /* LTTNG_FILE_DESCRIPTOR_HPP */
This page took
0.023912 seconds
and
4
git commands to generate.