k_client_session.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <string>
  5. #include "core/hle/kernel/k_auto_object.h"
  6. #include "core/hle/kernel/slab_helpers.h"
  7. #include "core/hle/result.h"
  8. union Result;
  9. namespace Core::Memory {
  10. class Memory;
  11. }
  12. namespace Core::Timing {
  13. class CoreTiming;
  14. }
  15. namespace Kernel {
  16. class KernelCore;
  17. class KSession;
  18. class KThread;
  19. class KClientSession final
  20. : public KAutoObjectWithSlabHeapAndContainer<KClientSession, KAutoObjectWithList> {
  21. KERNEL_AUTOOBJECT_TRAITS(KClientSession, KAutoObject);
  22. public:
  23. explicit KClientSession(KernelCore& kernel_);
  24. ~KClientSession() override;
  25. void Initialize(KSession* parent_session_, std::string&& name_) {
  26. // Set member variables.
  27. parent = parent_session_;
  28. name = std::move(name_);
  29. }
  30. void Destroy() override;
  31. static void PostDestroy([[maybe_unused]] uintptr_t arg) {}
  32. KSession* GetParent() const {
  33. return parent;
  34. }
  35. Result SendSyncRequest(KThread* thread, Core::Memory::Memory& memory,
  36. Core::Timing::CoreTiming& core_timing);
  37. void OnServerClosed();
  38. private:
  39. KSession* parent{};
  40. };
  41. } // namespace Kernel