posix: add flock wrapper
This commit is contained in:
parent
acbfa674ff
commit
3d085c4de7
@ -93,6 +93,8 @@ list (
|
|||||||
posix/except.hpp
|
posix/except.hpp
|
||||||
posix/fd.cpp
|
posix/fd.cpp
|
||||||
posix/fd.hpp
|
posix/fd.hpp
|
||||||
|
posix/flock.cpp
|
||||||
|
posix/flock.hpp
|
||||||
posix/ostream.cpp
|
posix/ostream.cpp
|
||||||
posix/ostream.hpp
|
posix/ostream.hpp
|
||||||
posix/util.cpp
|
posix/util.cpp
|
||||||
|
55
posix/flock.cpp
Normal file
55
posix/flock.cpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* Copyright 2021-2022, Danny Robson <danny@nerdcruft.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "./flock.hpp"
|
||||||
|
#include "./except.hpp"
|
||||||
|
|
||||||
|
#include <sys/file.h>
|
||||||
|
|
||||||
|
using flock_ = cruft::posix::flock;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
flock_::flock (
|
||||||
|
cruft::posix::fd &&_fd,
|
||||||
|
int operation
|
||||||
|
)
|
||||||
|
: m_fd (std::move (_fd))
|
||||||
|
{
|
||||||
|
cruft::posix::error::try_code (
|
||||||
|
::flock (m_fd.native (), operation)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
flock_::flock (flock_ &&rhs) noexcept
|
||||||
|
: m_fd (std::move (rhs.m_fd))
|
||||||
|
{ ; }
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
flock_::~flock ()
|
||||||
|
{
|
||||||
|
if (m_fd.native () < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cruft::posix::error::try_code (
|
||||||
|
::flock (m_fd.native (), LOCK_UN)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
cruft::posix::fd const&
|
||||||
|
flock_::native (void) const
|
||||||
|
{
|
||||||
|
return m_fd;
|
||||||
|
}
|
||||||
|
|
32
posix/flock.hpp
Normal file
32
posix/flock.hpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* Copyright 2021-2022, Danny Robson <danny@nerdcruft.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "./fd.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
namespace cruft::posix {
|
||||||
|
class flock {
|
||||||
|
public:
|
||||||
|
flock (cruft::posix::fd const&, int operation);
|
||||||
|
flock (cruft::posix::fd &&, int operation);
|
||||||
|
flock (int fd, int operation);
|
||||||
|
|
||||||
|
~flock ();
|
||||||
|
|
||||||
|
flock (flock&&) noexcept;
|
||||||
|
flock& operator= (flock&&) noexcept;
|
||||||
|
flock (flock const&) = delete;
|
||||||
|
flock& operator= (flock const&) = delete;
|
||||||
|
|
||||||
|
cruft::posix::fd const& native (void) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
cruft::posix::fd m_fd;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user