Write KEvent::Initialize, fix build issues
This commit is contained in:
@@ -21,12 +21,12 @@ class IClient {
|
||||
|
||||
ParentType *GetParent() const { return parent; }
|
||||
|
||||
protected:
|
||||
void SetParent(SharedPtr<Parent> parent)
|
||||
{
|
||||
this->parent = std::move(parent);
|
||||
}
|
||||
|
||||
protected:
|
||||
SharedPtr<Parent> parent{};
|
||||
};
|
||||
|
||||
|
||||
@@ -12,14 +12,15 @@ class IClientServerParent {
|
||||
using ClientType = Client;
|
||||
using ServerType = Server;
|
||||
|
||||
protected:
|
||||
void SetClientServerParent()
|
||||
{
|
||||
Parent par = (Parent *)this;
|
||||
Parent *par = (Parent *)this;
|
||||
client.SetParent(par);
|
||||
server.SetParent(par);
|
||||
server.SetParentAndClient(par, &client);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
ClientType client{};
|
||||
ServerType server{};
|
||||
};
|
||||
|
||||
@@ -21,13 +21,14 @@ class IServer {
|
||||
|
||||
ParentType *GetParent() const { return parent; }
|
||||
|
||||
protected:
|
||||
void SetParent(SharedPtr<Parent> parent)
|
||||
void SetParentAndClient(SharedPtr<Parent> parent, SharedPtr<Client> client)
|
||||
{
|
||||
this->parent = std::move(parent);
|
||||
this->client = &this->parent->client;
|
||||
this->client = std::move(client);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
SharedPtr<Parent> parent{};
|
||||
SharedPtr<Client> client{};
|
||||
};
|
||||
|
||||
@@ -6,6 +6,7 @@ class KProcess;
|
||||
#include <mesosphere/core/Result.hpp>
|
||||
#include <mesosphere/core/KAutoObject.hpp>
|
||||
#include <mesosphere/interfaces/ISetAllocated.hpp>
|
||||
#include <mesosphere/interfaces/ILimitedResource.hpp>
|
||||
#include <mesosphere/interfaces/IClientServerParent.hpp>
|
||||
#include <mesosphere/processes/KReadableEvent.hpp>
|
||||
#include <mesosphere/processes/KWritableEvent.hpp>
|
||||
@@ -13,26 +14,27 @@ class KProcess;
|
||||
namespace mesosphere
|
||||
{
|
||||
|
||||
class KEvent final : public KAutoObject, IClientServerParent<KEvent, KReadableEvent, KWritableEvent> {
|
||||
class KEvent final :
|
||||
public KAutoObject,
|
||||
public IClientServerParent<KEvent, KReadableEvent, KWritableEvent>,
|
||||
public ISetAllocated<KEvent>,
|
||||
public ILimitedResource<KEvent> {
|
||||
public:
|
||||
MESOSPHERE_AUTO_OBJECT_TRAITS(AutoObject, Event);
|
||||
|
||||
explicit KEvent() : owner(nullptr), is_initialized(false) {}
|
||||
virtual ~KEvent() {}
|
||||
|
||||
KProcess *GetOwner() const { return this->owner; }
|
||||
void Initialize();
|
||||
|
||||
virtual ~KEvent();
|
||||
|
||||
Result Initialize();
|
||||
|
||||
/* KAutoObject */
|
||||
virtual bool IsAlive() const override { return is_initialized; }
|
||||
virtual bool IsAlive() const override;
|
||||
|
||||
/* IClientServerParent */
|
||||
void HandleServerDestroyed() { }
|
||||
void HandleClientDestroyed() { }
|
||||
|
||||
private:
|
||||
KProcess *owner;
|
||||
bool is_initialized;
|
||||
bool isInitialized = false;
|
||||
};
|
||||
|
||||
inline void intrusive_ptr_add_ref(KEvent *obj)
|
||||
|
||||
@@ -16,20 +16,19 @@ class KEvent;
|
||||
class KReadableEvent final : public KSynchronizationObject, public IClient<KEvent, KReadableEvent, KWritableEvent> {
|
||||
public:
|
||||
MESOSPHERE_AUTO_OBJECT_TRAITS(SynchronizationObject, ReadableEvent);
|
||||
|
||||
|
||||
virtual bool IsAlive() const override { return true; }
|
||||
|
||||
explicit KReadableEvent() {}
|
||||
virtual ~KReadableEvent() {}
|
||||
|
||||
virtual ~KReadableEvent();
|
||||
|
||||
Result Signal();
|
||||
Result Clear();
|
||||
Result Reset();
|
||||
|
||||
|
||||
virtual bool IsSignaled() const override;
|
||||
|
||||
|
||||
private:
|
||||
bool is_signaled = false;
|
||||
bool isSignaled = false;
|
||||
};
|
||||
|
||||
inline void intrusive_ptr_add_ref(KReadableEvent *obj)
|
||||
|
||||
@@ -17,9 +17,8 @@ class KWritableEvent final : public KAutoObject, public IServer<KEvent, KReadabl
|
||||
MESOSPHERE_AUTO_OBJECT_TRAITS(AutoObject, WritableEvent);
|
||||
|
||||
virtual bool IsAlive() const override { return true; }
|
||||
|
||||
explicit KWritableEvent() {}
|
||||
virtual ~KWritableEvent() {}
|
||||
|
||||
virtual ~KWritableEvent();
|
||||
|
||||
Result Signal();
|
||||
Result Clear();
|
||||
|
||||
Reference in New Issue
Block a user