Files
2026-10-23 16:13:31 +00:00

51 lines
1.0 KiB
C++

#pragma once
#include "SessionImpl.hpp"
#include "ddkit/utils/container.hpp"
#include "ddkit/actors/SessionImpl.hpp"
#include <memory>
#include <mutex>
#include <condition_variable>
namespace ddkit {
namespace actors {
class IActor;
typedef std::shared_ptr<IActor> ActorPtr;
class SessionImpl;
typedef std::shared_ptr<SessionImpl> SessionImplPtr;
typedef std::weak_ptr<SessionImpl> SessionImplWeakPtr;
class IActor : public std::enable_shared_from_this<IActor> {
public:
virtual ~IActor();
SessionImplPtr sessionImpl();
bool isMonitor();
virtual void shutdown() = 0;
virtual bool isValid() = 0;
protected:
IActor(const SessionImplPtr& sessionImpl);
IActor() = delete;
IActor(IActor&) = delete;
IActor(IActor&&) = delete;
// todo nth: for which members exactly the syncing is needed? for now: try for all
std::recursive_mutex m_mutex;
std::condition_variable_any m_condition;
SessionImplWeakPtr m_sessionImplWeak;
};
} // namespace actors
} // namespace ddkit