Difference between revisions of "NPNS services"
(→npns:s) |
|||
(29 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | This is used for Push Notifications. | ||
+ | |||
+ | It uses a version of the libstrophe[http://strophe.im/libstrophe/] xmpp library with libxml2. | ||
+ | Modifications were made to use the [[SSL services|ssl]] service and support network proxy settings. | ||
+ | |||
= npns:u = | = npns:u = | ||
This is "nn::npns::INpnsUser". | This is "nn::npns::INpnsUser". | ||
Line 8: | Line 13: | ||
| 1 || ListenAll | | 1 || ListenAll | ||
|- | |- | ||
− | | 2 || ListenTo | + | | 2 || [[#ListenTo]] |
|- | |- | ||
| 3 || Receive | | 3 || Receive | ||
Line 14: | Line 19: | ||
| 4 || ReceiveRaw | | 4 || ReceiveRaw | ||
|- | |- | ||
− | | 5 || GetReceiveEvent | + | | 5 || [[#GetReceiveEvent]] |
+ | |- | ||
+ | | 7 || [[#GetStateChangeEvent]] | ||
|- | |- | ||
− | | | + | | 8 || [18.0.0+] ListenToByName |
|- | |- | ||
| 21 || CreateToken | | 21 || CreateToken | ||
Line 24: | Line 31: | ||
| 25 || QueryIsTokenValid | | 25 || QueryIsTokenValid | ||
|- | |- | ||
− | | 26 || [ | + | | 26 || [5.0.0+] ListenToMyApplicationId |
|- | |- | ||
| 101 || Suspend | | 101 || Suspend | ||
Line 32: | Line 39: | ||
| 103 || GetState | | 103 || GetState | ||
|- | |- | ||
− | | 104 || GetStatistics | + | | 104 || [3.0.0+] GetStatistics |
|- | |- | ||
| 111 || GetJid | | 111 || GetJid | ||
Line 38: | Line 45: | ||
| 120 || [7.0.0+] [[#CreateNotificationReceiver]] | | 120 || [7.0.0+] [[#CreateNotificationReceiver]] | ||
|- | |- | ||
− | | 151 || [8.0.0+] | + | | 151 || [8.0.0+] GetStateWithHandover |
+ | |- | ||
+ | | 152 || [8.0.0+] GetStateChangeEventWithHandover | ||
|- | |- | ||
− | | | + | | 153 || [8.0.0+] GetDropEventWithHandover |
|- | |- | ||
− | | | + | | 154 || [12.0.0+] CreateTokenAsync |
|} | |} | ||
− | + | [5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= npns:s = | = npns:s = | ||
Line 75: | Line 65: | ||
| 1 || ListenAll | | 1 || ListenAll | ||
|- | |- | ||
− | | 2 || ListenTo | + | | 2 || [[#ListenTo]] |
|- | |- | ||
| 3 || Receive | | 3 || Receive | ||
Line 81: | Line 71: | ||
| 4 || ReceiveRaw | | 4 || ReceiveRaw | ||
|- | |- | ||
− | | 5 || GetReceiveEvent | + | | 5 || [[#GetReceiveEvent]] |
+ | |- | ||
+ | | 6 || [[#ListenUndelivered]] | ||
|- | |- | ||
− | | | + | | 7 || [[#GetStateChangeEvent]] |
|- | |- | ||
− | | | + | | 8 || [18.0.0+] ListenToByName |
|- | |- | ||
| 11 || SubscribeTopic | | 11 || SubscribeTopic | ||
Line 91: | Line 83: | ||
| 12 || UnsubscribeTopic | | 12 || UnsubscribeTopic | ||
|- | |- | ||
− | | 13 || QueryIsTopicExist | + | | 13 || [1.0.0-17.0.1] QueryIsTopicExist |
+ | |- | ||
+ | | 14 || [18.0.0+] SubscribeTopicByAccount | ||
+ | |- | ||
+ | | 15 || [18.0.0+] UnsubscribeTopicByAccount | ||
+ | |- | ||
+ | | 16 || [18.0.0+] DownloadSubscriptionList | ||
+ | |- | ||
+ | | 17 || [19.0.0+] | ||
|- | |- | ||
| 21 || CreateToken | | 21 || CreateToken | ||
Line 102: | Line 102: | ||
|- | |- | ||
| 25 || QueryIsTokenValid | | 25 || QueryIsTokenValid | ||
+ | |- | ||
+ | | 26 || [5.0.0+] ListenToMyApplicationId | ||
+ | |- | ||
+ | | 27 || [13.0.0+] DestroyTokenAll | ||
+ | |- | ||
+ | | 28 || [18.0.0+] CreateTokenWithName | ||
+ | |- | ||
+ | | 29 || [18.0.0+] DestroyTokenWithName | ||
|- | |- | ||
| 31 || UploadTokenToBaaS | | 31 || UploadTokenToBaaS | ||
|- | |- | ||
− | | 32 || DestroyTokenForBaaS | + | | 32 || [2.0.0+] DestroyTokenForBaaS |
|- | |- | ||
| 33 || [7.0.0+] CreateTokenForBaas | | 33 || [7.0.0+] CreateTokenForBaas | ||
|- | |- | ||
| 34 || [7.0.0+] SetBaasDeviceAccountIdList | | 34 || [7.0.0+] SetBaasDeviceAccountIdList | ||
+ | |- | ||
+ | | 35 || [17.0.0+] LinkNsaId | ||
+ | |- | ||
+ | | 36 || [17.0.0+] UnlinkNsaId | ||
+ | |- | ||
+ | | 37 || [18.0.0+] RelinkNsaId | ||
+ | |- | ||
+ | | 40 || [17.0.0+] GetNetworkServiceAccountIdTokenRequestEvent | ||
+ | |- | ||
+ | | 41 || [17.0.0+] TryPopNetworkServiceAccountIdTokenRequestUid | ||
+ | |- | ||
+ | | 42 || [17.0.0+] SetNetworkServiceAccountIdTokenSuccess | ||
+ | |- | ||
+ | | 43 || [17.0.0+] SetNetworkServiceAccountIdTokenFailure | ||
+ | |- | ||
+ | | 44 || [17.0.0+] SetUidList | ||
+ | |- | ||
+ | | 45 || [17.0.0+] PutDigitalTwinKeyValue | ||
+ | |- | ||
+ | | 51 || [18.0.0+] DeleteDigitalTwinKeyValue | ||
+ | |- | ||
+ | | 60 || [19.0.0+] | ||
+ | |- | ||
+ | | 61 || [19.0.0+] | ||
|- | |- | ||
| 101 || Suspend | | 101 || Suspend | ||
Line 117: | Line 149: | ||
| 103 || GetState | | 103 || GetState | ||
|- | |- | ||
− | | 104 || GetStatistics | + | | 104 || [3.0.0+] GetStatistics |
+ | |- | ||
+ | | 105 || [3.0.0+] GetPlayReportRequestEvent | ||
+ | |- | ||
+ | | 106 || [18.0.0+] GetLastNotifiedTime | ||
|- | |- | ||
− | | | + | | 107 || [18.0.0+] SetLastNotifiedTime |
|- | |- | ||
− | | 111 || GetJid | + | | 111 || [[#GetJid]] |
|- | |- | ||
− | | 112 || CreateJid | + | | 112 || [[#CreateJid]] |
|- | |- | ||
− | | 113 || DestroyJid | + | | 113 || [[#DestroyJid]] |
|- | |- | ||
| 114 || AttachJid | | 114 || AttachJid | ||
Line 133: | Line 169: | ||
| 120 || [7.0.0+] [[#CreateNotificationReceiver]] | | 120 || [7.0.0+] [[#CreateNotificationReceiver]] | ||
|- | |- | ||
− | | | + | | 141 || [19.0.0+] |
|- | |- | ||
− | | | + | | 142 || [19.0.0+] |
|- | |- | ||
− | | | + | | 143 || [19.0.0+] |
|- | |- | ||
− | | | + | | 144 || [19.0.0+] |
|- | |- | ||
− | | 153 || [8.0.0+] | + | | 145 || [19.0.0+] |
+ | |- | ||
+ | | 151 || [8.0.0+] GetStateWithHandover | ||
+ | |- | ||
+ | | 152 || [8.0.0+] GetStateChangeEventWithHandover | ||
+ | |- | ||
+ | | 153 || [8.0.0+] GetDropEventWithHandover | ||
+ | |- | ||
+ | | 154 || [12.0.0+] CreateTokenAsync | ||
+ | |- | ||
+ | | 155 || [12.0.0+] CreateTokenAsyncWithApplicationId | ||
+ | |- | ||
+ | | 156 || [18.0.0+] CreateTokenWithNameAsync | ||
+ | |- | ||
+ | | 161 || [10.0.0+] GetRequestChangeStateCancelEvent | ||
+ | |- | ||
+ | | 162 || [10.0.0+] RequestChangeStateForceTimedWithCancelEvent | ||
+ | |- | ||
+ | | 201 || [3.0.0+] RequestChangeStateForceTimed | ||
+ | |- | ||
+ | | 202 || [3.0.0+] RequestChangeStateForceAsync | ||
+ | |- | ||
+ | | 301 || [18.0.0+] GetPassword | ||
+ | |- | ||
+ | | 302 || [18.0.0+] GetAllImmigration | ||
+ | |- | ||
+ | | 303 || [18.0.0+] GetNotificationHistories | ||
+ | |- | ||
+ | | 304 || [18.0.0+] GetPersistentConnectionSummary | ||
+ | |- | ||
+ | | 305 || [18.0.0+] GetDigitalTwinSummary | ||
+ | |- | ||
+ | | 306 || [18.0.0+] GetDigitalTwinValue | ||
|} | |} | ||
+ | |||
+ | [5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID. | ||
+ | |||
+ | ListenAll, ReceiveRaw, CreateToken, DestroyToken, QueryIsTokenValid are stubbed. They return 0x7fc9a on [1.0.0] and 0x36dc9a on later versions. | ||
+ | |||
+ | === ListenTo === | ||
+ | Takes an input u64 program id, no output. | ||
+ | |||
+ | === GetReceiveEvent === | ||
+ | No input, returns an output Event handle with autoclear=true. | ||
+ | |||
+ | === GetStateChangeEvent === | ||
+ | No input, returns an output Event handle with autoclear=true. | ||
+ | |||
+ | === ListenUndelivered === | ||
+ | No input, same as calling [[#ListenTo]] with program id 0. | ||
+ | |||
+ | === GetJid === | ||
+ | No input, returns the current Jabber Identifier[https://xmpp.org/extensions/xep-0029.html] in a type-10 buffer. | ||
+ | Locally it's stored in "npns_save:/persistent.bin" | ||
+ | |||
+ | === CreateJid === | ||
+ | No input, no output. | ||
+ | Fetches a new Jid from the CDN. Invalidates the old one if existent. | ||
+ | |||
+ | === DestroyJid === | ||
+ | No input, no output. | ||
+ | Invalidates and deletes the current Jid. | ||
+ | |||
+ | === CreateNotificationReceiver === | ||
+ | Returns an [[#INotificationReceiver]]. | ||
+ | |||
+ | == INotificationReceiver == | ||
+ | This is "nn::npns::INotificationReceiver". | ||
+ | |||
+ | This was added with [7.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name || Notes | ||
+ | |- | ||
+ | | 1 || [[#ListenTo]] || Takes a total of 8-bytes of input, no output. | ||
+ | |- | ||
+ | | 2 || ListenToMyApplicationId || Takes a total of 8-bytes of input and a PID, no output. | ||
+ | |- | ||
+ | | 3 || Receive || Takes a total of 2-bytes of input and a type-0x6 output buffer. | ||
+ | |- | ||
+ | | 4 || GetReceiveEvent || No input, returns an output handle. | ||
+ | |- | ||
+ | | 5 || [18.0.0+] ListenToByName || | ||
+ | |} | ||
+ | |||
+ | == ICreateTokenAsyncContext == | ||
+ | This is "nn::npns::ICreateTokenAsyncContext". | ||
+ | |||
+ | This was added with [12.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 1 || GetFinishEvent | ||
+ | |- | ||
+ | | 2 || Cancel | ||
+ | |- | ||
+ | | 3 || GetResult | ||
+ | |- | ||
+ | | 10 || GetToken | ||
+ | |} | ||
+ | |||
+ | == ISubscriptionUpdateNotifier == | ||
+ | This is "nn::npns::ISubscriptionUpdateNotifier". | ||
+ | |||
+ | This was added with [19.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 1 || | ||
+ | |- | ||
+ | | 2 || | ||
+ | |} | ||
+ | |||
+ | == IFuture == | ||
+ | This is "nn::npns::IFuture". | ||
+ | |||
+ | This was added with [19.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 1 || | ||
+ | |- | ||
+ | | 2 || | ||
+ | |- | ||
+ | | 3 || | ||
+ | |- | ||
+ | | 10 || | ||
+ | |} | ||
+ | |||
+ | = Notes = | ||
+ | [[Process_Manager_services|pm:bm]] GetBootMode is only used for passing <code>BootMode == Maintenance</code> to a func, which eventually writes that flag into object state. The func which uses GetBootMode is called from nnMain. | ||
[[Category:Services]] | [[Category:Services]] |
Latest revision as of 00:10, 24 October 2024
This is used for Push Notifications.
It uses a version of the libstrophe[1] xmpp library with libxml2. Modifications were made to use the ssl service and support network proxy settings.
npns:u
This is "nn::npns::INpnsUser".
Cmd | Name |
---|---|
1 | ListenAll |
2 | #ListenTo |
3 | Receive |
4 | ReceiveRaw |
5 | #GetReceiveEvent |
7 | #GetStateChangeEvent |
8 | [18.0.0+] ListenToByName |
21 | CreateToken |
23 | DestroyToken |
25 | QueryIsTokenValid |
26 | [5.0.0+] ListenToMyApplicationId |
101 | Suspend |
102 | Resume |
103 | GetState |
104 | [3.0.0+] GetStatistics |
111 | GetJid |
120 | [7.0.0+] #CreateNotificationReceiver |
151 | [8.0.0+] GetStateWithHandover |
152 | [8.0.0+] GetStateChangeEventWithHandover |
153 | [8.0.0+] GetDropEventWithHandover |
154 | [12.0.0+] CreateTokenAsync |
[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.
npns:s
This is "nn::npns::INpnsSystem".
Cmd | Name |
---|---|
1 | ListenAll |
2 | #ListenTo |
3 | Receive |
4 | ReceiveRaw |
5 | #GetReceiveEvent |
6 | #ListenUndelivered |
7 | #GetStateChangeEvent |
8 | [18.0.0+] ListenToByName |
11 | SubscribeTopic |
12 | UnsubscribeTopic |
13 | [1.0.0-17.0.1] QueryIsTopicExist |
14 | [18.0.0+] SubscribeTopicByAccount |
15 | [18.0.0+] UnsubscribeTopicByAccount |
16 | [18.0.0+] DownloadSubscriptionList |
17 | [19.0.0+] |
21 | CreateToken |
22 | CreateTokenWithApplicationId |
23 | DestroyToken |
24 | DestroyTokenWithApplicationId |
25 | QueryIsTokenValid |
26 | [5.0.0+] ListenToMyApplicationId |
27 | [13.0.0+] DestroyTokenAll |
28 | [18.0.0+] CreateTokenWithName |
29 | [18.0.0+] DestroyTokenWithName |
31 | UploadTokenToBaaS |
32 | [2.0.0+] DestroyTokenForBaaS |
33 | [7.0.0+] CreateTokenForBaas |
34 | [7.0.0+] SetBaasDeviceAccountIdList |
35 | [17.0.0+] LinkNsaId |
36 | [17.0.0+] UnlinkNsaId |
37 | [18.0.0+] RelinkNsaId |
40 | [17.0.0+] GetNetworkServiceAccountIdTokenRequestEvent |
41 | [17.0.0+] TryPopNetworkServiceAccountIdTokenRequestUid |
42 | [17.0.0+] SetNetworkServiceAccountIdTokenSuccess |
43 | [17.0.0+] SetNetworkServiceAccountIdTokenFailure |
44 | [17.0.0+] SetUidList |
45 | [17.0.0+] PutDigitalTwinKeyValue |
51 | [18.0.0+] DeleteDigitalTwinKeyValue |
60 | [19.0.0+] |
61 | [19.0.0+] |
101 | Suspend |
102 | Resume |
103 | GetState |
104 | [3.0.0+] GetStatistics |
105 | [3.0.0+] GetPlayReportRequestEvent |
106 | [18.0.0+] GetLastNotifiedTime |
107 | [18.0.0+] SetLastNotifiedTime |
111 | #GetJid |
112 | #CreateJid |
113 | #DestroyJid |
114 | AttachJid |
115 | DetachJid |
120 | [7.0.0+] #CreateNotificationReceiver |
141 | [19.0.0+] |
142 | [19.0.0+] |
143 | [19.0.0+] |
144 | [19.0.0+] |
145 | [19.0.0+] |
151 | [8.0.0+] GetStateWithHandover |
152 | [8.0.0+] GetStateChangeEventWithHandover |
153 | [8.0.0+] GetDropEventWithHandover |
154 | [12.0.0+] CreateTokenAsync |
155 | [12.0.0+] CreateTokenAsyncWithApplicationId |
156 | [18.0.0+] CreateTokenWithNameAsync |
161 | [10.0.0+] GetRequestChangeStateCancelEvent |
162 | [10.0.0+] RequestChangeStateForceTimedWithCancelEvent |
201 | [3.0.0+] RequestChangeStateForceTimed |
202 | [3.0.0+] RequestChangeStateForceAsync |
301 | [18.0.0+] GetPassword |
302 | [18.0.0+] GetAllImmigration |
303 | [18.0.0+] GetNotificationHistories |
304 | [18.0.0+] GetPersistentConnectionSummary |
305 | [18.0.0+] GetDigitalTwinSummary |
306 | [18.0.0+] GetDigitalTwinValue |
[5.0.0+] CreateToken/DestroyToken now takes an additional 8-bytes of input and a PID.
ListenAll, ReceiveRaw, CreateToken, DestroyToken, QueryIsTokenValid are stubbed. They return 0x7fc9a on [1.0.0] and 0x36dc9a on later versions.
ListenTo
Takes an input u64 program id, no output.
GetReceiveEvent
No input, returns an output Event handle with autoclear=true.
GetStateChangeEvent
No input, returns an output Event handle with autoclear=true.
ListenUndelivered
No input, same as calling #ListenTo with program id 0.
GetJid
No input, returns the current Jabber Identifier[2] in a type-10 buffer. Locally it's stored in "npns_save:/persistent.bin"
CreateJid
No input, no output. Fetches a new Jid from the CDN. Invalidates the old one if existent.
DestroyJid
No input, no output. Invalidates and deletes the current Jid.
CreateNotificationReceiver
Returns an #INotificationReceiver.
INotificationReceiver
This is "nn::npns::INotificationReceiver".
This was added with [7.0.0+].
Cmd | Name | Notes |
---|---|---|
1 | #ListenTo | Takes a total of 8-bytes of input, no output. |
2 | ListenToMyApplicationId | Takes a total of 8-bytes of input and a PID, no output. |
3 | Receive | Takes a total of 2-bytes of input and a type-0x6 output buffer. |
4 | GetReceiveEvent | No input, returns an output handle. |
5 | [18.0.0+] ListenToByName |
ICreateTokenAsyncContext
This is "nn::npns::ICreateTokenAsyncContext".
This was added with [12.0.0+].
Cmd | Name |
---|---|
1 | GetFinishEvent |
2 | Cancel |
3 | GetResult |
10 | GetToken |
ISubscriptionUpdateNotifier
This is "nn::npns::ISubscriptionUpdateNotifier".
This was added with [19.0.0+].
Cmd | Name |
---|---|
1 | |
2 |
IFuture
This is "nn::npns::IFuture".
This was added with [19.0.0+].
Cmd | Name |
---|---|
1 | |
2 | |
3 | |
10 |
Notes
pm:bm GetBootMode is only used for passing BootMode == Maintenance
to a func, which eventually writes that flag into object state. The func which uses GetBootMode is called from nnMain.