#pragma once #include #include "Utilities/mutex.h" #include "Emu/Cell/Modules/sceNp.h" template <> struct std::less { bool operator()(const SceNpRoomId& a, const SceNpRoomId& b) const { return (std::memcmp(a.opt, b.opt, sizeof(a.opt)) < 0); } }; template <> struct std::less { bool operator()(const SceNpId& a, const SceNpId& b) const { return (std::memcmp(a.handle.data, b.handle.data, sizeof(a.handle.data)) < 0); } }; namespace np { struct gui_room_member { SceNpUserInfo info; bool owner; }; struct gui_room_cache { std::map members; }; class gui_cache_manager { public: gui_cache_manager() = default; void add_room(const SceNpRoomId& room_id); void del_room(const SceNpRoomId& room_id); void add_member(const SceNpRoomId& room_id, const SceNpMatchingRoomMember* user_info, bool new_member); void del_member(const SceNpRoomId& room_id, const SceNpMatchingRoomMember* user_info); error_code get_room_member_list(const SceNpRoomId& room_id, u32 buf_len, vm::ptr data); private: shared_mutex mutex; std::map rooms; }; } // namespace np