libsshpp v0.1.7
Modern C++17 wrapper for libssh
Loading...
Searching...
No Matches
session_core.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2#pragma once
3
4#include <sshpp/config.hpp>
5
7
8#include <atomic>
9#include <memory>
10#include <mutex>
11
12namespace sshpp::detail {
13
18public:
19 explicit SessionCore(native_session raw) noexcept : raw_(raw) {}
21
22 SessionCore(const SessionCore&) = delete;
24
25 native_session raw() const noexcept { return raw_; }
26 std::recursive_mutex& mutex() noexcept { return mutex_; }
27
28 bool valid() const noexcept { return raw_ != nullptr; }
29
31 void replace(native_session raw) noexcept;
32
33 void request_cancel() noexcept { cancel_requested_.store(true, std::memory_order_relaxed); }
34 void clear_cancel() noexcept { cancel_requested_.store(false, std::memory_order_relaxed); }
35 bool cancel_requested() const noexcept { return cancel_requested_.load(std::memory_order_relaxed); }
36
37private:
38 native_session raw_;
39 std::recursive_mutex mutex_;
40 std::atomic<bool> cancel_requested_{false};
41};
42
43using SessionCorePtr = std::shared_ptr<SessionCore>;
44
45} // namespace sshpp::detail
46
47#if SSHPP_HEADER_ONLY
49#endif
Definition session_core.hpp:17
SessionCore(native_session raw) noexcept
Definition session_core.hpp:19
native_session raw() const noexcept
Definition session_core.hpp:25
SessionCore(const SessionCore &)=delete
~SessionCore()
Definition session_core.ipp:11
void request_cancel() noexcept
Definition session_core.hpp:33
void replace(native_session raw) noexcept
Replaces the underlying ssh_session (used by Session::try_reconnect()).
Definition session_core.ipp:19
void clear_cancel() noexcept
Definition session_core.hpp:34
std::recursive_mutex & mutex() noexcept
Definition session_core.hpp:26
SessionCore & operator=(const SessionCore &)=delete
bool valid() const noexcept
Definition session_core.hpp:28
bool cancel_requested() const noexcept
Definition session_core.hpp:35
Definition handler_bridge.hpp:10
std::shared_ptr< SessionCore > SessionCorePtr
Definition session_core.hpp:43
::ssh_session_struct * native_session
Definition native_fwd.hpp:25