Repository navigation
feat(libSceNpCppWebApi): bring up the SessionManager friends player sessions family - #13255
Conversation
Progress report (c42e3a0 → 4403d9e)📈 System libraries: 26.81% (+0.07%, +40 implemented, +5 declared functions) ✅ 40 implemented
⚪ 4 behaviourally empty (constant return or throw)
🆕 5 declared as stubs
Changed libraries (implemented exports)
|
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
@edubox, reviewed at 8a08ef8. Please correct the transaction lifecycle and error cases before treating this family as matching the bundled module.
These are static observations of the bundled J03093737 module, SHA256 0666df3c089dc49b1231ceeedb8a86b1e740f80ef91563d5f57d65734b8167c2, rather than execution of J03341606. If that build intentionally differs, please attach immutable driver/output or disassembly evidence for the exact cases. Update the debt entry/body to distinguish the measured model layouts from the incomplete offline transaction/allocator behavior. The new field/vector tests are useful; none of the new tests pins NotImplemented throws. |
|
Windows run of this head (
AI-assisted: yes (Claude Code). |
|
@edubox This PR's debt entry goes in directly below the |
|
Applied the transaction points on head
Verified on this head: |
|
Added it to the |
|
Applied the 2026-10-30 review on head
Verified locally on this head: |
5d76a9e to
d2c683e
Compare
|
Rebased onto current Verified on this exact head (Linux x86-64, GCC 16.2.1, Release):
The 2026-10-30 review points from @oneandonlydean remain addressed on this head: the 0x10-byte transaction constructor clears its first 16 bytes with a prefilled-object test and trailing sentinels, AI-assisted: yes |
d2c683e to
ab92dd6
Compare
|
Rebased onto current Verified on this exact head (Linux x86-64, GCC 16.2.1, Release):
AI-assisted: yes |
ab92dd6 to
600ebb2
Compare
|
Rebased onto current Verified on this exact head (Linux x86-64, GCC 16.2.1, Release):
AI-assisted: yes |
|
Rebased onto current Focused tests pass: AI-assisted: yes (Claude Code). |
600ebb2 to
8632497
Compare
8632497 to
fcdeb96
Compare
|
Rebased onto current
Head is now |
fcdeb96 to
9e8f5b2
Compare
|
Rebased onto current
Head is now |
|
Rebased automatically onto current |
9e8f5b2 to
6d21897
Compare
|
Rebased automatically onto current |
e301715 to
7a73903
Compare
|
Rebased onto Focused checks on the rebased head:
New head |
7a73903 to
c20b1b4
Compare
|
Rebased onto current The review's transaction changes are in the branch at
|
✅ AMD GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (13, not counted against this PR)Validation IDs already present on main (4 IDs in 756 tests)Skipped (59)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
✅ AMD GPU test: passedPR head
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (13, not counted against this PR)Passed on retry (3, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validation IDs already present on main (4 IDs in 758 tests)Skipped (59)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
Rebased automatically onto current |
c20b1b4 to
1f67624
Compare
✅ AMD GPU test: passedPR head
Unstable on main (6, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (13, not counted against this PR)Passed on retry (1, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validated but not compared (1, not in the main baseline's validation pass)Validation IDs already present on main (4 IDs in 769 tests)Skipped (60)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
Rebased automatically onto current |
1f67624 to
c40efff
Compare
✅ AMD GPU test: passedPR head
Unstable on main (8, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (11, not counted against this PR)Passed on retry (6, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validation IDs already present on main (8 IDs in 783 tests)Skipped (62)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
c40efff to
cc3655d
Compare
|
Rebased onto current The transaction-lifecycle points from the earlier review are in this head: the constructor clears the 0x10-byte object, On this head: |
❌ AMD GPU test: failedPR head
Failing testsThis PR changes test files, so each failing test was also built and run on main with only the PR's test changes applied. ✅ there means the failure comes from the PR's other changes; ❌ means the test fails on main too, so this run does not show the PR caused it.
public_headers: Timeout (also failed when re-run alone), assertion and diagnosticsUnstable on main (8, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (13, not counted against this PR)Passed on retry (2, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validated but not compared (2, not in the main baseline's validation pass)Validation IDs already present on main (8 IDs in 809 tests)Skipped (63)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
|
Rebased automatically onto current |
cc3655d to
1c3c222
Compare
✅ AMD GPU test: passedPR head
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (14, not counted against this PR)Validation IDs already present on main (4 IDs in 811 tests)Skipped (62)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
…essions family Implement the 45 exports imported for PlayerSessionsApi::getFriendsPlayerSessions, the Friend and FriendJoinedPlayerSession models, the response body and its transaction. Layouts and offsets come from the module bundled with PPSA23732 (J03341606). Offline the request and transaction fail as on a signed-out console; the model getters and the inline vector/iterator views use the real layout measured in that module. Tests: guest_np_cpp_web_api_friends (new) plus the existing np_cpp_web_api suite.
Clear the 0x10-byte transaction in its constructor, validate the start context before reporting the signed-out console, and make getResponse and getFriendsPlayerSessions return 0x80553508 while the transaction is unstarted. Extend the test with a prefilled transaction and an unchanged output sentinel, and split the debt entry into model layout and transaction behaviour.
|
Rebased automatically onto current |
1c3c222 to
4403d9e
Compare
What
Implement the 45 exports imported for
SessionManager::V1::PlayerSessionsApi::getFriendsPlayerSessionsthat were still missing:ParameterToGetFriendsPlayerSessionslifecycle (C1,D1,initialize,terminate).getFriendsPlayerSessions, theTransactionandTransactionBaseentry points.Friend,FriendJoinedPlayerSessionandGetFriendsPlayerSessionsResponseBodyaccessors.IntrusivePtr,VectorandConstIteratorhelpers used by this family.The model layouts come from the module bundled with the titles (build J03341606):
Friendstores account id at+0x10,accountIdIsSetat+0x18,IntrusivePtr<Vector<FriendJoinedPlayerSession>>at+0x30andplayerSessionsIsSetat+0x48;FriendJoinedPlayerSessionstoresString sessionIdat+0x10andsessionIdIsSetat+0x30; the response body storesIntrusivePtr<Vector<Friend>>at+0x30. The vector views use the real inline layout (begin+0x18, end+0x28, refcount+0x30, 0x18-byte elements) and the iterator is{int32 referenceCount; void* element}.The transaction is 0x10 bytes: its constructor zeroes both words.
TransactionBase::startreturns0x80553503for a null context,0x80553502for an uninitialized context and thenSCE_NP_WEBAPI_ERROR_NOT_SIGNED_IN;finishreturns0x80553508.getResponseandgetFriendsPlayerSessionsreturn0x80553508while the two transaction words are zero (unstarted), andSCE_NP_WEBAPI_ERROR_NOT_SIGNED_INonce the transaction is started; no response object is produced.Tested
ctest --test-dir build -R guest_np_cpp_web_api: 8/8 passed, including the newguest_np_cpp_web_api_friends.start/getResponse/API errors (with a prefilled transaction and an unchanged output sentinel), model getters,IntrusivePtrcopy/destroy, the inline vector layout, iterator traversal andgetFriends/getPlayerSessionscopy/add-ref.python3 tools/check_conventions.py --base origin/main: passed.python3 tools/pr_overlap.py --branch feat/npcpp-friends-sessions --jobs 32: no overlap.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)