mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-16 04:09:07 +00:00
Clans: implemented IDM & ctx for requests
Signed-off-by: zeph <zephyrzefa15@gmail.com>
This commit is contained in:
parent
7378657c4b
commit
fed72dcf90
@ -138,16 +138,15 @@ error_code sceNpClansCreateRequest(vm::ptr<SceNpClansRequestHandle> handle, u64
|
||||
}
|
||||
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
SceNpClansError res = clans_manager.client->createRequest();
|
||||
|
||||
s32 reqId = 0;
|
||||
SceNpClansError res = clans_manager.client->createRequest(&reqId);
|
||||
if (res != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return res;
|
||||
}
|
||||
|
||||
// TODO: replace this mock request with an actual
|
||||
// generator that yields an actual request.
|
||||
vm::var<struct SceNpClansRequest> req;
|
||||
vm::write32(handle.addr(), req.addr());
|
||||
vm::write32(handle.addr(), static_cast<u32>(reqId));
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
@ -160,7 +159,10 @@ error_code sceNpClansDestroyRequest(vm::ptr<SceNpClansRequestHandle> handle)
|
||||
}
|
||||
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
SceNpClansError res = clans_manager.client->destroyRequest();
|
||||
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError res = clans_manager.client->destroyRequest(reqId);
|
||||
if (res != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return res;
|
||||
@ -177,7 +179,10 @@ error_code sceNpClansAbortRequest(vm::ptr<SceNpClansRequestHandle> handle)
|
||||
}
|
||||
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
clans_manager.client->destroyRequest();
|
||||
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
clans_manager.client->destroyRequest(reqId);
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
@ -259,7 +264,9 @@ error_code sceNpClansGetClanList(vm::ptr<SceNpClansRequestHandle> handle, vm::cp
|
||||
SceNpClansEntry host_clanList[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansPagingResult host_pageResult = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getClanList(nph, &host_paging, host_clanList, &host_pageResult);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getClanList(nph, reqId, &host_paging, host_clanList, &host_pageResult);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -365,7 +372,9 @@ error_code sceNpClansSearchByName(vm::ptr<SceNpClansRequestHandle> handle, vm::c
|
||||
SceNpClansClanBasicInfo host_results[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansPagingResult host_pageResult = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->clanSearch(&host_paging, &host_search, host_results, &host_pageResult);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->clanSearch(reqId, &host_paging, &host_search, host_results, &host_pageResult);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -397,7 +406,9 @@ error_code sceNpClansGetClanInfo(vm::ptr<SceNpClansRequestHandle> handle, SceNpC
|
||||
|
||||
SceNpClansClanInfo host_info = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getClanInfo(clanId, &host_info);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getClanInfo(reqId, clanId, &host_info);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -427,7 +438,9 @@ error_code sceNpClansUpdateClanInfo(vm::ptr<SceNpClansRequestHandle> handle, Sce
|
||||
SceNpClansUpdatableClanInfo host_info = {};
|
||||
std::memcpy(&host_info, info.get_ptr(), sizeof(SceNpClansUpdatableClanInfo));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->updateClanInfo(nph, clanId, &host_info);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->updateClanInfo(nph, reqId, clanId, &host_info);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -473,7 +486,9 @@ error_code sceNpClansGetMemberList(vm::ptr<SceNpClansRequestHandle> handle, SceN
|
||||
SceNpClansMemberEntry* host_memList_addr = new SceNpClansMemberEntry[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX];
|
||||
SceNpClansPagingResult host_pageResult = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getMemberList(nph, clanId, &host_paging, status, host_memList_addr, &host_pageResult);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getMemberList(nph, reqId, clanId, &host_paging, status, host_memList_addr, &host_pageResult);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
delete[] host_memList_addr;
|
||||
@ -510,7 +525,9 @@ error_code sceNpClansGetMemberInfo(vm::ptr<SceNpClansRequestHandle> handle, SceN
|
||||
|
||||
SceNpClansMemberEntry host_memInfo = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getMemberInfo(nph, clanId, host_npid, &host_memInfo);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getMemberInfo(nph, reqId, clanId, host_npid, &host_memInfo);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -539,7 +556,9 @@ error_code sceNpClansUpdateMemberInfo(vm::ptr<SceNpClansRequestHandle> handle, S
|
||||
SceNpClansUpdatableMemberInfo host_info = {};
|
||||
std::memcpy(&host_info, info.get_ptr(), sizeof(SceNpClansUpdatableMemberInfo));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->updateMemberInfo(nph, clanId, &host_info);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->updateMemberInfo(nph, reqId, clanId, &host_info);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -566,7 +585,9 @@ error_code sceNpClansChangeMemberRole(vm::ptr<SceNpClansRequestHandle> handle, S
|
||||
SceNpId host_npid = {};
|
||||
std::memcpy(&host_npid, npid.get_ptr(), sizeof(SceNpId));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->changeMemberRole(nph, clanId, host_npid, role);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->changeMemberRole(nph, reqId, clanId, host_npid, static_cast<SceNpClansMemberRole>(role));
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -616,7 +637,9 @@ error_code sceNpClansJoinClan(vm::ptr<SceNpClansRequestHandle> handle, SceNpClan
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
|
||||
SceNpClansError ret = clans_manager.client->joinClan(nph, clanId);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->joinClan(nph, reqId, clanId);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -635,7 +658,9 @@ error_code sceNpClansLeaveClan(vm::ptr<SceNpClansRequestHandle> handle, SceNpCla
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
|
||||
SceNpClansError ret = clans_manager.client->leaveClan(nph, clanId);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->leaveClan(nph, reqId, clanId);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -676,7 +701,9 @@ error_code sceNpClansKickMember(vm::ptr<SceNpClansRequestHandle> handle, SceNpCl
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
SceNpClansError ret = clans_manager.client->kickMember(nph, clanId, host_npid, &host_message);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->kickMember(nph, reqId, clanId, host_npid, &host_message);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -717,7 +744,9 @@ error_code sceNpClansSendInvitation(vm::ptr<SceNpClansRequestHandle> handle, Sce
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendInvitation(nph, clanId, host_npid, &host_message);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendInvitation(nph, reqId, clanId, host_npid, &host_message);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -744,7 +773,9 @@ error_code sceNpClansCancelInvitation(vm::ptr<SceNpClansRequestHandle> handle, S
|
||||
SceNpId host_npid = {};
|
||||
std::memcpy(&host_npid, npid.get_ptr(), sizeof(SceNpId));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->cancelInvitation(nph, clanId, host_npid);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->cancelInvitation(nph, reqId, clanId, host_npid);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -777,7 +808,14 @@ error_code sceNpClansSendInvitationResponse(vm::ptr<SceNpClansRequestHandle> han
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendInvitationResponse(nph, clanId, &host_message, accept);
|
||||
if (message)
|
||||
{
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendInvitationResponse(nph, reqId, clanId, &host_message, accept);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -810,7 +848,9 @@ error_code sceNpClansSendMembershipRequest(vm::ptr<SceNpClansRequestHandle> hand
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
SceNpClansError ret = clans_manager.client->requestMembership(nph, clanId, &host_message);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->requestMembership(nph, reqId, clanId, &host_message);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -829,7 +869,9 @@ error_code sceNpClansCancelMembershipRequest(vm::ptr<SceNpClansRequestHandle> ha
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
|
||||
SceNpClansError ret = clans_manager.client->cancelRequestMembership(nph, clanId);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->cancelRequestMembership(nph, reqId, clanId);
|
||||
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
@ -871,7 +913,9 @@ error_code sceNpClansSendMembershipResponse(vm::ptr<SceNpClansRequestHandle> han
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
}
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendMembershipResponse(nph, clanId, host_npid, &host_message, allow);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->sendMembershipResponse(nph, reqId, clanId, host_npid, &host_message, allow);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -914,10 +958,12 @@ error_code sceNpClansGetBlacklist(vm::ptr<SceNpClansRequestHandle> handle, SceNp
|
||||
host_paging.max = 0;
|
||||
}
|
||||
|
||||
SceNpClansBlacklistEntry host_bl[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansBlacklistEntry host_blacklist[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansPagingResult host_pageResult = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getBlacklist(nph, clanId, &host_paging, host_bl, &host_pageResult);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->getBlacklist(nph, reqId, clanId, &host_paging, host_blacklist, &host_pageResult);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -925,21 +971,21 @@ error_code sceNpClansGetBlacklist(vm::ptr<SceNpClansRequestHandle> handle, SceNp
|
||||
|
||||
if (bl && host_pageResult.count > 0)
|
||||
{
|
||||
std::memcpy(bl.get_ptr(), host_bl, sizeof(SceNpClansBlacklistEntry) * host_pageResult.count);
|
||||
std::memcpy(bl.get_ptr(), host_blacklist, sizeof(SceNpClansBlacklistEntry) * host_pageResult.count);
|
||||
}
|
||||
std::memcpy(pageResult.get_ptr(), &host_pageResult, sizeof(SceNpClansPagingResult));
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpClansAddBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle, SceNpClanId clanId, vm::cptr<SceNpId> npid)
|
||||
error_code sceNpClansAddBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle, SceNpClanId clanId, vm::cptr<SceNpId> member)
|
||||
{
|
||||
if (!g_fxo->get<sce_np_clans_manager>().is_initialized)
|
||||
{
|
||||
return SCE_NP_CLANS_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
if (!npid)
|
||||
if (!member)
|
||||
{
|
||||
return SCE_NP_CLANS_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
@ -947,10 +993,12 @@ error_code sceNpClansAddBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle,
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
|
||||
SceNpId host_npid = {};
|
||||
std::memcpy(&host_npid, npid.get_ptr(), sizeof(SceNpId));
|
||||
SceNpId host_member = {};
|
||||
std::memcpy(&host_member, member.get_ptr(), sizeof(SceNpId));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->addBlacklistEntry(nph, clanId, host_npid);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->addBlacklistEntry(nph, reqId, clanId, host_member);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -959,14 +1007,14 @@ error_code sceNpClansAddBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle,
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code sceNpClansRemoveBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle, SceNpClanId clanId, vm::cptr<SceNpId> npid)
|
||||
error_code sceNpClansRemoveBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handle, SceNpClanId clanId, vm::cptr<SceNpId> member)
|
||||
{
|
||||
if (!g_fxo->get<sce_np_clans_manager>().is_initialized)
|
||||
{
|
||||
return SCE_NP_CLANS_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
if (!npid)
|
||||
if (!member)
|
||||
{
|
||||
return SCE_NP_CLANS_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
@ -974,10 +1022,12 @@ error_code sceNpClansRemoveBlacklistEntry(vm::ptr<SceNpClansRequestHandle> handl
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
|
||||
SceNpId host_npid = {};
|
||||
std::memcpy(&host_npid, npid.get_ptr(), sizeof(SceNpId));
|
||||
SceNpId host_member = {};
|
||||
std::memcpy(&host_member, member.get_ptr(), sizeof(SceNpId));
|
||||
|
||||
SceNpClansError ret = clans_manager.client->removeBlacklistEntry(nph, clanId, host_npid);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->removeBlacklistEntry(nph, reqId, clanId, host_member);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -1020,10 +1070,12 @@ error_code sceNpClansRetrieveAnnouncements(vm::ptr<SceNpClansRequestHandle> hand
|
||||
host_paging.max = 0;
|
||||
}
|
||||
|
||||
SceNpClansMessageEntry host_mlist[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansMessageEntry host_announcements[SCE_NP_CLANS_PAGING_REQUEST_PAGE_MAX] = {};
|
||||
SceNpClansPagingResult host_pageResult = {};
|
||||
|
||||
SceNpClansError ret = clans_manager.client->retrieveAnnouncements(nph, clanId, &host_paging, host_mlist, &host_pageResult);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->retrieveAnnouncements(nph, reqId, clanId, &host_paging, host_announcements, &host_pageResult);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
@ -1031,7 +1083,7 @@ error_code sceNpClansRetrieveAnnouncements(vm::ptr<SceNpClansRequestHandle> hand
|
||||
|
||||
if (mlist && host_pageResult.count > 0)
|
||||
{
|
||||
std::memcpy(mlist.get_ptr(), host_mlist, sizeof(SceNpClansMessageEntry) * host_pageResult.count);
|
||||
std::memcpy(mlist.get_ptr(), host_announcements, sizeof(SceNpClansMessageEntry) * host_pageResult.count);
|
||||
}
|
||||
std::memcpy(pageResult.get_ptr(), &host_pageResult, sizeof(SceNpClansPagingResult));
|
||||
|
||||
@ -1058,8 +1110,8 @@ error_code sceNpClansPostAnnouncement(vm::ptr<SceNpClansRequestHandle> handle, S
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
SceNpClansMessage host_message = {};
|
||||
std::memcpy(&host_message, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
SceNpClansMessage host_announcement = {};
|
||||
std::memcpy(&host_announcement, message.get_ptr(), sizeof(SceNpClansMessage));
|
||||
|
||||
SceNpClansMessageData host_data = {};
|
||||
if (data)
|
||||
@ -1067,15 +1119,16 @@ error_code sceNpClansPostAnnouncement(vm::ptr<SceNpClansRequestHandle> handle, S
|
||||
std::memcpy(&host_data, data.get_ptr(), sizeof(SceNpClansMessageData));
|
||||
}
|
||||
|
||||
SceNpClansMessageId host_mId = 0;
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->postAnnouncement(nph, clanId, &host_message, &host_data, duration, &host_mId);
|
||||
SceNpClansMessageId host_announcementId = 0;
|
||||
SceNpClansError ret = clans_manager.client->postAnnouncement(nph, reqId, clanId, &host_announcement, &host_data, duration, &host_announcementId);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
*mId = host_mId;
|
||||
*mId = host_announcementId;
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
@ -1090,7 +1143,9 @@ error_code sceNpClansRemoveAnnouncement(vm::ptr<SceNpClansRequestHandle> handle,
|
||||
auto& clans_manager = g_fxo->get<sce_np_clans_manager>();
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
|
||||
SceNpClansError ret = clans_manager.client->deleteAnnouncement(nph, clanId, mId);
|
||||
s32 reqId = static_cast<s32>(handle.addr());
|
||||
|
||||
SceNpClansError ret = clans_manager.client->deleteAnnouncement(nph, reqId, clanId, mId);
|
||||
if (ret != SCE_NP_CLANS_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
#include "Emu/Cell/Modules/sceNpClans.h"
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <util/types.hpp>
|
||||
@ -129,50 +130,85 @@ namespace clan
|
||||
return realsize;
|
||||
}
|
||||
|
||||
struct clan_request_ctx
|
||||
{
|
||||
clan_request_ctx()
|
||||
{
|
||||
curl = curl_easy_init();
|
||||
if (curl)
|
||||
{
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA);
|
||||
}
|
||||
}
|
||||
|
||||
~clan_request_ctx()
|
||||
{
|
||||
if (curl)
|
||||
{
|
||||
curl_easy_cleanup(curl);
|
||||
curl = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
CURL* curl = nullptr;
|
||||
|
||||
// TODO: this was arbitrarily chosen -- see if there's a real amount
|
||||
static const u32 SCE_NP_CLANS_MAX_CTX_NUM = 16;
|
||||
|
||||
static const u32 id_base = 0xA001;
|
||||
static const u32 id_step = 1;
|
||||
static const u32 id_count = SCE_NP_CLANS_MAX_CTX_NUM;
|
||||
SAVESTATE_INIT_POS(55);
|
||||
};
|
||||
|
||||
clans_client::clans_client()
|
||||
{
|
||||
g_cfg_clans.load();
|
||||
|
||||
createRequest();
|
||||
}
|
||||
|
||||
clans_client::~clans_client()
|
||||
{
|
||||
destroyRequest();
|
||||
idm::clear<clan_request_ctx>();
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::createRequest()
|
||||
SceNpClansError clans_client::createRequest(s32* reqId)
|
||||
{
|
||||
if (curl)
|
||||
return SceNpClansError::SCE_NP_CLANS_SUCCESS;
|
||||
const s32 id = idm::make<clan_request_ctx>();
|
||||
|
||||
curl = curl_easy_init();
|
||||
if (!curl)
|
||||
if (id == id_manager::id_traits<clan_request_ctx>::invalid)
|
||||
{
|
||||
return SceNpClansError::SCE_NP_CLANS_ERROR_EXCEEDS_MAX;
|
||||
}
|
||||
|
||||
auto ctx = idm::get_unlocked<clan_request_ctx>(id);
|
||||
if (!ctx || !ctx->curl)
|
||||
{
|
||||
idm::remove<clan_request_ctx>(id);
|
||||
return SceNpClansError::SCE_NP_CLANS_ERROR_NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA);
|
||||
*reqId = id;
|
||||
|
||||
return SceNpClansError::SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::destroyRequest()
|
||||
SceNpClansError clans_client::destroyRequest(s32 reqId)
|
||||
{
|
||||
if (curl)
|
||||
{
|
||||
curl_easy_cleanup(curl);
|
||||
curl = nullptr;
|
||||
}
|
||||
if (idm::remove<clan_request_ctx>(reqId))
|
||||
return SceNpClansError::SCE_NP_CLANS_SUCCESS;
|
||||
|
||||
return SceNpClansError::SCE_NP_CLANS_SUCCESS;
|
||||
return SceNpClansError::SCE_NP_CLANS_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::sendRequest(ClanRequestAction action, ClanManagerOperationType opType, pugi::xml_document* xmlBody, pugi::xml_document* outResponse)
|
||||
SceNpClansError clans_client::sendRequest(s32 reqId, ClanRequestAction action, ClanManagerOperationType opType, pugi::xml_document* xmlBody, pugi::xml_document* outResponse)
|
||||
{
|
||||
if (!curl)
|
||||
auto ctx = idm::get_unlocked<clan_request_ctx>(reqId);
|
||||
|
||||
if (!ctx || !ctx->curl)
|
||||
return SCE_NP_CLANS_ERROR_NOT_INITIALIZED;
|
||||
|
||||
CURL* curl = ctx->curl;
|
||||
|
||||
ClanRequestType reqType = ClanRequestType::FUNC;
|
||||
pugi::xml_node clan = xmlBody->child("clan");
|
||||
if (clan && clan.child("ticket"))
|
||||
@ -203,7 +239,7 @@ namespace clan
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, xml.c_str());
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, xml.size());
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
CURLcode res = curl_easy_perform(curl);
|
||||
|
||||
if (res != CURLE_OK)
|
||||
{
|
||||
@ -215,10 +251,10 @@ namespace clan
|
||||
|
||||
response_buffer.push_back('\0');
|
||||
|
||||
pugi::xml_parse_result res = outResponse->load_string(response_buffer.data());
|
||||
if (!res)
|
||||
pugi::xml_parse_result xml_res = outResponse->load_string(response_buffer.data());
|
||||
if (!xml_res)
|
||||
{
|
||||
clan_log.error("XML parsing failed: %s", res.description());
|
||||
clan_log.error("XML parsing failed: %s", xml_res.description());
|
||||
return SCE_NP_CLANS_ERROR_BAD_RESPONSE;
|
||||
}
|
||||
|
||||
@ -288,7 +324,7 @@ namespace clan
|
||||
}
|
||||
|
||||
#pragma region Outgoing API Requests
|
||||
SceNpClansError clans_client::getClanList(np::np_handler& nph, SceNpClansPagingRequest* paging, SceNpClansEntry* clanList, SceNpClansPagingResult* pageResult)
|
||||
SceNpClansError clans_client::getClanList(np::np_handler& nph, s32 reqId, SceNpClansPagingRequest* paging, SceNpClansEntry* clanList, SceNpClansPagingResult* pageResult)
|
||||
{
|
||||
pugi::xml_document doc = pugi::xml_document();
|
||||
pugi::xml_node clan = doc.append_child("clan");
|
||||
@ -299,7 +335,7 @@ namespace clan
|
||||
clan.append_child("max").text().set(paging->max);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::GetClanList, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::GetClanList, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -362,14 +398,14 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::getClanInfo(SceNpClanId clanId, SceNpClansClanInfo* clanInfo)
|
||||
SceNpClansError clans_client::getClanInfo(s32 reqId, SceNpClanId clanId, SceNpClansClanInfo* clanInfo)
|
||||
{
|
||||
pugi::xml_document doc = pugi::xml_document();
|
||||
pugi::xml_node clan = doc.append_child("clan");
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::GetClanInfo, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::GetClanInfo, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -401,7 +437,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::getMemberInfo(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMemberEntry* memInfo)
|
||||
SceNpClansError clans_client::getMemberInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMemberEntry* memInfo)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -414,7 +450,7 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::GetMemberInfo, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::GetMemberInfo, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -469,7 +505,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::getMemberList(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMemberStatus /*status*/, SceNpClansMemberEntry* memList, SceNpClansPagingResult* pageResult)
|
||||
SceNpClansError clans_client::getMemberList(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMemberStatus /*status*/, SceNpClansMemberEntry* memList, SceNpClansPagingResult* pageResult)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -481,7 +517,7 @@ namespace clan
|
||||
clan.append_child("max").text().set(paging->max);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::GetMemberList, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::GetMemberList, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -545,7 +581,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::getBlacklist(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansBlacklistEntry* bl, SceNpClansPagingResult* pageResult)
|
||||
SceNpClansError clans_client::getBlacklist(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansBlacklistEntry* bl, SceNpClansPagingResult* pageResult)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -557,7 +593,7 @@ namespace clan
|
||||
clan.append_child("max").text().set(paging->max);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::GetBlacklist, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::GetBlacklist, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -609,7 +645,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::addBlacklistEntry(np::np_handler& nph, SceNpClanId clanId, SceNpId npId)
|
||||
SceNpClansError clans_client::addBlacklistEntry(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -622,10 +658,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::RecordBlacklistEntry, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::RecordBlacklistEntry, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::removeBlacklistEntry(np::np_handler& nph, SceNpClanId clanId, SceNpId npId)
|
||||
SceNpClansError clans_client::removeBlacklistEntry(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -638,10 +674,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::DeleteBlacklistEntry, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::DeleteBlacklistEntry, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::clanSearch(SceNpClansPagingRequest* paging, SceNpClansSearchableName* search, SceNpClansClanBasicInfo* clanList, SceNpClansPagingResult* pageResult)
|
||||
SceNpClansError clans_client::clanSearch(s32 reqId, SceNpClansPagingRequest* paging, SceNpClansSearchableName* search, SceNpClansClanBasicInfo* clanList, SceNpClansPagingResult* pageResult)
|
||||
{
|
||||
pugi::xml_document doc = pugi::xml_document();
|
||||
pugi::xml_node clan = doc.append_child("clan");
|
||||
@ -656,7 +692,7 @@ namespace clan
|
||||
name.append_attribute("value").set_value(search->name);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::ClanSearch, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::ClanSearch, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -703,7 +739,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::requestMembership(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* /*message*/)
|
||||
SceNpClansError clans_client::requestMembership(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* /*message*/)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -713,10 +749,10 @@ namespace clan
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::RequestMembership, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::RequestMembership, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::cancelRequestMembership(np::np_handler& nph, SceNpClanId clanId)
|
||||
SceNpClansError clans_client::cancelRequestMembership(np::np_handler& nph, s32 reqId, SceNpClanId clanId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -726,10 +762,10 @@ namespace clan
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::CancelRequestMembership, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::CancelRequestMembership, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::sendMembershipResponse(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/, b8 allow)
|
||||
SceNpClansError clans_client::sendMembershipResponse(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/, b8 allow)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -742,10 +778,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(allow ? ClanRequestAction::AcceptMembershipRequest : ClanRequestAction::DeclineMembershipRequest, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, allow ? ClanRequestAction::AcceptMembershipRequest : ClanRequestAction::DeclineMembershipRequest, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::sendInvitation(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/)
|
||||
SceNpClansError clans_client::sendInvitation(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -758,10 +794,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::SendInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::SendInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::cancelInvitation(np::np_handler& nph, SceNpClanId clanId, SceNpId npId)
|
||||
SceNpClansError clans_client::cancelInvitation(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -774,10 +810,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::CancelInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::CancelInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::sendInvitationResponse(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* /*message*/, b8 accept)
|
||||
SceNpClansError clans_client::sendInvitationResponse(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* /*message*/, b8 accept)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -787,10 +823,10 @@ namespace clan
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(accept ? ClanRequestAction::AcceptInvitation : ClanRequestAction::DeclineInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, accept ? ClanRequestAction::AcceptInvitation : ClanRequestAction::DeclineInvitation, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::updateMemberInfo(np::np_handler& nph, SceNpClanId clanId, SceNpClansUpdatableMemberInfo* info)
|
||||
SceNpClansError clans_client::updateMemberInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansUpdatableMemberInfo* info)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -824,10 +860,10 @@ namespace clan
|
||||
size.text().set(info->binData1Size);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::UpdateMemberInfo, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::UpdateMemberInfo, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::updateClanInfo(np::np_handler& nph, SceNpClanId clanId, SceNpClansUpdatableClanInfo* info)
|
||||
SceNpClansError clans_client::updateClanInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansUpdatableClanInfo* info)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -842,10 +878,10 @@ namespace clan
|
||||
description.text().set(info->description);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::UpdateClanInfo, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::UpdateClanInfo, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::joinClan(np::np_handler& nph, SceNpClanId clanId)
|
||||
SceNpClansError clans_client::joinClan(np::np_handler& nph, s32 reqId, SceNpClanId clanId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -855,10 +891,10 @@ namespace clan
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::JoinClan, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::JoinClan, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::leaveClan(np::np_handler& nph, SceNpClanId clanId)
|
||||
SceNpClansError clans_client::leaveClan(np::np_handler& nph, s32 reqId, SceNpClanId clanId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -868,10 +904,10 @@ namespace clan
|
||||
clan.append_child("id").text().set(clanId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::LeaveClan, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::LeaveClan, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::kickMember(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/)
|
||||
SceNpClansError clans_client::kickMember(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* /*message*/)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -884,10 +920,10 @@ namespace clan
|
||||
clan.append_child("jid").text().set(jid_str.c_str());
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::KickMember, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::KickMember, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::changeMemberRole(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMemberRole role)
|
||||
SceNpClansError clans_client::changeMemberRole(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMemberRole role)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -903,10 +939,10 @@ namespace clan
|
||||
roleNode.text().set(static_cast<uint32_t>(role));
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::ChangeMemberRole, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::ChangeMemberRole, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::retrieveAnnouncements(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMessageEntry* announcements, SceNpClansPagingResult* pageResult)
|
||||
SceNpClansError clans_client::retrieveAnnouncements(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMessageEntry* announcements, SceNpClansPagingResult* pageResult)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -918,7 +954,7 @@ namespace clan
|
||||
clan.append_child("max").text().set(paging->max);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::RetrieveAnnouncements, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::RetrieveAnnouncements, ClanManagerOperationType::VIEW, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -987,7 +1023,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::postAnnouncement(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* announcement, SceNpClansMessageData* /*data*/, u32 duration, SceNpClansMessageId* msgId)
|
||||
SceNpClansError clans_client::postAnnouncement(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* announcement, SceNpClansMessageData* /*data*/, u32 duration, SceNpClansMessageId* msgId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -1006,7 +1042,7 @@ namespace clan
|
||||
expireDate.text().set(duration);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
SceNpClansError clanRes = sendRequest(ClanRequestAction::PostAnnouncement, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
SceNpClansError clanRes = sendRequest(reqId, ClanRequestAction::PostAnnouncement, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
|
||||
if (clanRes != SCE_NP_CLANS_SUCCESS)
|
||||
return clanRes;
|
||||
@ -1018,7 +1054,7 @@ namespace clan
|
||||
return SCE_NP_CLANS_SUCCESS;
|
||||
}
|
||||
|
||||
SceNpClansError clans_client::deleteAnnouncement(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessageId announcementId)
|
||||
SceNpClansError clans_client::deleteAnnouncement(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessageId announcementId)
|
||||
{
|
||||
std::string ticket = getClanTicket(nph);
|
||||
|
||||
@ -1029,7 +1065,7 @@ namespace clan
|
||||
clan.append_child("msg-id").text().set(announcementId);
|
||||
|
||||
pugi::xml_document response = pugi::xml_document();
|
||||
return sendRequest(ClanRequestAction::DeleteAnnouncement, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
return sendRequest(reqId, ClanRequestAction::DeleteAnnouncement, ClanManagerOperationType::UPDATE, &doc, &response);
|
||||
}
|
||||
}
|
||||
#pragma endregion
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include <3rdparty/curl/curl/include/curl/curl.h>
|
||||
#include <Emu/Cell/Modules/sceNpClans.h>
|
||||
#include <Emu/NP/np_handler.h>
|
||||
#include <Emu/IdManager.h>
|
||||
#include <pugixml.hpp>
|
||||
|
||||
namespace clan
|
||||
@ -62,11 +63,10 @@ namespace clan
|
||||
class clans_client
|
||||
{
|
||||
private:
|
||||
CURL* curl = nullptr;
|
||||
CURLcode res = CURLE_OK;
|
||||
|
||||
|
||||
static size_t curlWriteCallback(void* data, size_t size, size_t nmemb, void* clientp);
|
||||
SceNpClansError sendRequest(ClanRequestAction action, ClanManagerOperationType type, pugi::xml_document* xmlBody, pugi::xml_document* outResponse);
|
||||
SceNpClansError sendRequest(s32 reqId, ClanRequestAction action, ClanManagerOperationType type, pugi::xml_document* xmlBody, pugi::xml_document* outResponse);
|
||||
|
||||
/// @brief Forge and get a V2.1 Ticket for clan operations
|
||||
std::string getClanTicket(np::np_handler& nph);
|
||||
@ -75,41 +75,41 @@ namespace clan
|
||||
clans_client();
|
||||
~clans_client();
|
||||
|
||||
SceNpClansError createRequest();
|
||||
SceNpClansError destroyRequest();
|
||||
SceNpClansError createRequest(s32* reqId);
|
||||
SceNpClansError destroyRequest(s32 reqId);
|
||||
|
||||
SceNpClansError clanSearch(SceNpClansPagingRequest* paging, SceNpClansSearchableName* search, SceNpClansClanBasicInfo* clanList, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError clanSearch(s32 reqId, SceNpClansPagingRequest* paging, SceNpClansSearchableName* search, SceNpClansClanBasicInfo* clanList, SceNpClansPagingResult* pageResult);
|
||||
|
||||
SceNpClansError getClanList(np::np_handler& nph, SceNpClansPagingRequest* paging, SceNpClansEntry* clanList, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError getClanInfo(SceNpClanId clanId, SceNpClansClanInfo* clanInfo);
|
||||
SceNpClansError getClanList(np::np_handler& nph, s32 reqId, SceNpClansPagingRequest* paging, SceNpClansEntry* clanList, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError getClanInfo(s32 reqId, SceNpClanId clanId, SceNpClansClanInfo* clanInfo);
|
||||
|
||||
SceNpClansError getMemberInfo(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMemberEntry* memInfo);
|
||||
SceNpClansError getMemberList(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMemberStatus status, SceNpClansMemberEntry* memList, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError getMemberInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMemberEntry* memInfo);
|
||||
SceNpClansError getMemberList(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMemberStatus status, SceNpClansMemberEntry* memList, SceNpClansPagingResult* pageResult);
|
||||
|
||||
SceNpClansError getBlacklist(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansBlacklistEntry* bl, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError addBlacklistEntry(np::np_handler& nph, SceNpClanId clanId, SceNpId npId);
|
||||
SceNpClansError removeBlacklistEntry(np::np_handler& nph, SceNpClanId clanId, SceNpId npId);
|
||||
SceNpClansError getBlacklist(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansBlacklistEntry* bl, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError addBlacklistEntry(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId);
|
||||
SceNpClansError removeBlacklistEntry(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId);
|
||||
|
||||
SceNpClansError requestMembership(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* message);
|
||||
SceNpClansError cancelRequestMembership(np::np_handler& nph, SceNpClanId clanId);
|
||||
SceNpClansError sendMembershipResponse(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message, b8 allow);
|
||||
SceNpClansError requestMembership(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* message);
|
||||
SceNpClansError cancelRequestMembership(np::np_handler& nph, s32 reqId, SceNpClanId clanId);
|
||||
SceNpClansError sendMembershipResponse(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message, b8 allow);
|
||||
|
||||
SceNpClansError sendInvitation(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message);
|
||||
SceNpClansError cancelInvitation(np::np_handler& nph, SceNpClanId clanId, SceNpId npId);
|
||||
SceNpClansError sendInvitationResponse(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* message, b8 accept);
|
||||
SceNpClansError sendInvitation(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message);
|
||||
SceNpClansError cancelInvitation(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId);
|
||||
SceNpClansError sendInvitationResponse(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* message, b8 accept);
|
||||
|
||||
SceNpClansError joinClan(np::np_handler& nph, SceNpClanId clanId);
|
||||
SceNpClansError leaveClan(np::np_handler& nph, SceNpClanId clanId);
|
||||
SceNpClansError joinClan(np::np_handler& nph, s32 reqId, SceNpClanId clanId);
|
||||
SceNpClansError leaveClan(np::np_handler& nph, s32 reqId, SceNpClanId clanId);
|
||||
|
||||
SceNpClansError updateMemberInfo(np::np_handler& nph, SceNpClanId clanId, SceNpClansUpdatableMemberInfo* info);
|
||||
SceNpClansError updateClanInfo(np::np_handler& nph, SceNpClanId clanId, SceNpClansUpdatableClanInfo* info);
|
||||
SceNpClansError updateMemberInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansUpdatableMemberInfo* info);
|
||||
SceNpClansError updateClanInfo(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansUpdatableClanInfo* info);
|
||||
|
||||
SceNpClansError kickMember(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message);
|
||||
SceNpClansError changeMemberRole(np::np_handler& nph, SceNpClanId clanId, SceNpId npId, SceNpClansMemberRole role);
|
||||
SceNpClansError kickMember(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMessage* message);
|
||||
SceNpClansError changeMemberRole(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpId npId, SceNpClansMemberRole role);
|
||||
|
||||
SceNpClansError retrieveAnnouncements(np::np_handler& nph, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMessageEntry* announcements, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError postAnnouncement(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessage* announcement, SceNpClansMessageData* data, u32 duration, SceNpClansMessageId* announcementId);
|
||||
SceNpClansError deleteAnnouncement(np::np_handler& nph, SceNpClanId clanId, SceNpClansMessageId announcementId);
|
||||
SceNpClansError retrieveAnnouncements(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansPagingRequest* paging, SceNpClansMessageEntry* announcements, SceNpClansPagingResult* pageResult);
|
||||
SceNpClansError postAnnouncement(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessage* announcement, SceNpClansMessageData* data, u32 duration, SceNpClansMessageId* announcementId);
|
||||
SceNpClansError deleteAnnouncement(np::np_handler& nph, s32 reqId, SceNpClanId clanId, SceNpClansMessageId announcementId);
|
||||
};
|
||||
} // namespace clan
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user