libcamera
v0.7.2
Supporting cameras in Linux since 2019
Toggle main menu visibility
Loading...
Searching...
No Matches
unique_fd.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2
/*
3
* Copyright (C) 2021, Google Inc.
4
*
5
* File descriptor wrapper that owns a file descriptor.
6
*/
7
8
#pragma once
9
10
#include <utility>
11
12
#include <
libcamera/base/class.h
>
13
14
namespace
libcamera
{
15
16
class
UniqueFD
final
17
{
18
public
:
19
UniqueFD
()
20
: fd_(-1)
21
{
22
}
23
24
explicit
UniqueFD
(
int
fd)
25
: fd_(fd)
26
{
27
}
28
29
UniqueFD
(
UniqueFD
&&other)
30
: fd_(other.
release
())
31
{
32
}
33
34
~UniqueFD
()
35
{
36
reset
();
37
}
38
39
UniqueFD
&
operator=
(
UniqueFD
&&other)
40
{
41
reset
(other.release());
42
return
*
this
;
43
}
44
45
[[nodiscard]]
int
release
()
46
{
47
int
fd = fd_;
48
fd_ = -1;
49
return
fd;
50
}
51
52
void
reset
(
int
fd = -1);
53
54
void
swap
(
UniqueFD
&other)
55
{
56
std::swap(fd_, other.fd_);
57
}
58
59
int
get
()
const
{
return
fd_; }
60
bool
isValid
()
const
{
return
fd_ >= 0; }
61
62
private
:
63
LIBCAMERA_DISABLE_COPY
(
UniqueFD
)
64
65
int
fd_;
66
};
67
68
}
/* namespace libcamera */
class.h
Utilities to help constructing class interfaces.
LIBCAMERA_DISABLE_COPY
#define LIBCAMERA_DISABLE_COPY(klass)
Disable copy construction and assignment of the klass.
Definition
class.h:27
libcamera::UniqueFD
unique_ptr-like wrapper for a file descriptor
Definition
unique_fd.h:17
libcamera::UniqueFD::release
int release()
Release ownership of the file descriptor without closing it.
Definition
unique_fd.h:45
libcamera::UniqueFD::operator=
UniqueFD & operator=(UniqueFD &&other)
Move assignment operator, replace a UniqueFD by taking over other.
Definition
unique_fd.h:39
libcamera::UniqueFD::~UniqueFD
~UniqueFD()
Destroy the UniqueFD instance.
Definition
unique_fd.h:34
libcamera::UniqueFD::swap
void swap(UniqueFD &other)
Swap the managed file descriptors with another UniqueFD.
Definition
unique_fd.h:54
libcamera::UniqueFD::UniqueFD
UniqueFD()
Construct a UniqueFD that owns no file descriptor.
Definition
unique_fd.h:19
libcamera::UniqueFD::UniqueFD
UniqueFD(UniqueFD &&other)
Move constructor, create a UniqueFD by taking over other.
Definition
unique_fd.h:29
libcamera::UniqueFD::UniqueFD
UniqueFD(int fd)
Construct a UniqueFD that owns fd.
Definition
unique_fd.h:24
libcamera::UniqueFD::isValid
bool isValid() const
Check if the UniqueFD owns a valid file descriptor.
Definition
unique_fd.h:60
libcamera::UniqueFD::get
int get() const
Retrieve the managed file descriptor.
Definition
unique_fd.h:59
libcamera::UniqueFD::reset
void reset(int fd=-1)
Replace the managed file descriptor.
Definition
unique_fd.cpp:96
libcamera
Top-level libcamera namespace.
Definition
backtrace.h:17
include
libcamera
base
unique_fd.h
Generated by
1.18.0