k_client_session.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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();
  36. void OnServerClosed();
  37. private:
  38. KSession* parent{};
  39. };
  40. } // namespace Kernel