24 #include <shared_mutex> 29 class SessionMaintainer;
30 class ConstSessionMaintainer;
45 static std::shared_ptr<Session> create( Type type,
46 std::chrono::milliseconds timeout = std::chrono::milliseconds( 1000 ) );
50 const std::string& uuid()
const;
53 void setType( Type type );
55 bool isExpired()
const;
56 void updateKeepAlive()
const;
58 static Type typeFromUint(
unsigned type );
60 std::chrono::milliseconds timeout()
const;
66 Session( Type type, std::chrono::milliseconds timeout );
68 bool unlockedIsExpired()
const;
69 void blockExpiration()
const;
70 void unblockExpiration()
const;
72 const std::string m_uuid;
73 std::atomic<Type> m_type;
74 const std::chrono::milliseconds m_timeOut;
76 mutable std::atomic<std::chrono::steady_clock::time_point> m_lastKeepAlive;
77 mutable std::shared_mutex m_expirationBlockedMutex;
78 mutable bool m_expirationBlocked;
87 std::shared_ptr<Session> operator->();
88 std::shared_ptr<Session> operator*();
89 operator bool()
const;
90 bool operator!()
const;
94 std::shared_ptr<Session> m_session;
103 std::shared_ptr<const Session> operator->()
const;
104 std::shared_ptr<const Session> operator*()
const;
105 operator bool()
const;
106 bool operator!()
const;
110 std::shared_ptr<const Session> m_session;
Definition: cafSession.h:81
Definition: cafSession.h:97
Abstract class representing an application session.
Definition: cafSession.h:35
Main Caffa namespace.
Definition: cafApplication.h:30