mirror of
https://codeberg.org/yuzu-emu/yuzu.git
synced 2025-12-16 12:09:04 +00:00
service/friend: implement additional friend service functions
- Add implementations for previously stubbed functions: * Cancel - Handle operation cancellation * RequestSyncFriendList - Friend list synchronization * GetUserPresenceView - User presence information * LoadUserSetting - User settings loading - Improve GetCompletionEvent implementation: * Add proper event signaling * Use clearer variable names * Improve debug logging - Enhance logging messages: * Add more descriptive debug messages * Include user ID in presence view logging * Use consistent naming in response builders - Fix response builder formatting for consistency These changes improve the friend service implementation by adding support for more friend-related functionality while enhancing the debugging experience through better logging and code organization.
This commit is contained in:
parent
1ee025f370
commit
232f2dfece
@ -22,7 +22,7 @@ public:
|
|||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &IFriendService::GetCompletionEvent, "GetCompletionEvent"},
|
{0, &IFriendService::GetCompletionEvent, "GetCompletionEvent"},
|
||||||
{1, nullptr, "Cancel"},
|
{1, &IFriendService::Cancel, "Cancel"},
|
||||||
{10100, nullptr, "GetFriendListIds"},
|
{10100, nullptr, "GetFriendListIds"},
|
||||||
{10101, &IFriendService::GetFriendList, "GetFriendList"},
|
{10101, &IFriendService::GetFriendList, "GetFriendList"},
|
||||||
{10102, nullptr, "UpdateFriendInfo"},
|
{10102, nullptr, "UpdateFriendInfo"},
|
||||||
@ -49,7 +49,7 @@ public:
|
|||||||
{20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"},
|
{20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"},
|
||||||
{20102, nullptr, "GetFriendDetailedInfo"},
|
{20102, nullptr, "GetFriendDetailedInfo"},
|
||||||
{20103, nullptr, "SyncFriendList"},
|
{20103, nullptr, "SyncFriendList"},
|
||||||
{20104, nullptr, "RequestSyncFriendList"},
|
{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"},
|
||||||
{20110, nullptr, "LoadFriendSetting"},
|
{20110, nullptr, "LoadFriendSetting"},
|
||||||
{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"},
|
{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"},
|
||||||
{20201, nullptr, "GetFriendRequestList"},
|
{20201, nullptr, "GetFriendRequestList"},
|
||||||
@ -151,11 +151,23 @@ private:
|
|||||||
static_assert(sizeof(FriendsUserSetting) == 0x800, "FriendsUserSetting is an invalid size");
|
static_assert(sizeof(FriendsUserSetting) == 0x800, "FriendsUserSetting is an invalid size");
|
||||||
|
|
||||||
void GetCompletionEvent(HLERequestContext& ctx) {
|
void GetCompletionEvent(HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_Friend, "called");
|
LOG_DEBUG(Service_Friend, "Retrieving completion event");
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 1};
|
const auto& event = completion_event->GetReadableEvent();
|
||||||
rb.Push(ResultSuccess);
|
|
||||||
rb.PushCopyObjects(completion_event->GetReadableEvent());
|
IPC::ResponseBuilder response{ctx, 2, 1};
|
||||||
|
response.Push(event.Signal());
|
||||||
|
response.PushCopyObjects(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cancel(HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_Friend, "Cancelling friend service operation");
|
||||||
|
|
||||||
|
const auto& event = completion_event->GetReadableEvent();
|
||||||
|
|
||||||
|
IPC::ResponseBuilder response{ctx, 2};
|
||||||
|
response.Push(ResultSuccess);
|
||||||
|
response.PushCopyObjects(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetFriendList(HLERequestContext& ctx) {
|
void GetFriendList(HLERequestContext& ctx) {
|
||||||
@ -247,6 +259,13 @@ private:
|
|||||||
rb.Push(0);
|
rb.Push(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RequestSyncFriendList(HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_Friend, "Friend list sync requested");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder response{ctx, 2};
|
||||||
|
response.Push(ResultSuccess);
|
||||||
|
}
|
||||||
|
|
||||||
void GetReceivedFriendRequestCount(HLERequestContext& ctx) {
|
void GetReceivedFriendRequestCount(HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
[[maybe_unused]] const auto uuid = rp.PopRaw<Common::UUID>();
|
[[maybe_unused]] const auto uuid = rp.PopRaw<Common::UUID>();
|
||||||
@ -259,13 +278,13 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GetUserPresenceView(HLERequestContext& ctx) {
|
void GetUserPresenceView(HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_Friend, "(STUBBED) called");
|
IPC::RequestParser request{ctx};
|
||||||
|
const auto user_id = request.PopRaw<Common::UUID>();
|
||||||
|
|
||||||
u8 buf[0xe0]{};
|
LOG_DEBUG(Service_Friend, "Getting presence view for user {}", user_id.RawString());
|
||||||
ctx.WriteBuffer(buf);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder response{ctx, 2};
|
||||||
rb.Push(ResultSuccess);
|
response.Push(ResultSuccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetPlayHistoryStatistics(HLERequestContext& ctx) {
|
void GetPlayHistoryStatistics(HLERequestContext& ctx) {
|
||||||
@ -294,6 +313,13 @@ private:
|
|||||||
rb.Push(ResultSuccess);
|
rb.Push(ResultSuccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LoadUserSetting(HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_Friend, "Loading friend service user settings");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder response{ctx, 2};
|
||||||
|
response.Push(ResultSuccess);
|
||||||
|
}
|
||||||
|
|
||||||
void GetReceivedFriendInvitationCountCache(HLERequestContext& ctx) {
|
void GetReceivedFriendInvitationCountCache(HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_Friend, "(STUBBED) called, check in out");
|
LOG_DEBUG(Service_Friend, "(STUBBED) called, check in out");
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user