writable_event.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "core/hle/kernel/object.h"
  7. namespace Kernel {
  8. class KernelCore;
  9. class ReadableEvent;
  10. class WritableEvent;
  11. struct EventPair {
  12. std::shared_ptr<ReadableEvent> readable;
  13. std::shared_ptr<WritableEvent> writable;
  14. };
  15. class WritableEvent final : public Object {
  16. public:
  17. ~WritableEvent() override;
  18. /**
  19. * Creates an event
  20. * @param kernel The kernel instance to create this event under.
  21. * @param name Optional name of event
  22. */
  23. static EventPair CreateEventPair(KernelCore& kernel, std::string name = "Unknown");
  24. std::string GetTypeName() const override {
  25. return "WritableEvent";
  26. }
  27. std::string GetName() const override {
  28. return name;
  29. }
  30. static constexpr HandleType HANDLE_TYPE = HandleType::WritableEvent;
  31. HandleType GetHandleType() const override {
  32. return HANDLE_TYPE;
  33. }
  34. std::shared_ptr<ReadableEvent> GetReadableEvent() const;
  35. void Signal();
  36. void Clear();
  37. bool IsSignaled() const;
  38. private:
  39. explicit WritableEvent(KernelCore& kernel);
  40. std::shared_ptr<ReadableEvent> readable;
  41. std::string name; ///< Name of event (optional)
  42. };
  43. } // namespace Kernel