MessageQueue.cs 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  1. /*******************************************************************************
  2. Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
  3. NOTICE:All information contained herein is, and remains the property of
  4. PICO Technology Co., Ltd. The intellectual and technical concepts
  5. contained herein are proprietary to PICO Technology Co., Ltd. and may be
  6. covered by patents, patents in process, and are protected by trade secret or
  7. copyright law. Dissemination of this information or reproduction of this
  8. material is strictly forbidden unless prior written permission is obtained from
  9. PICO Technology Co., Ltd.
  10. *******************************************************************************/
  11. using System;
  12. using Pico.Platform.Models;
  13. namespace Pico.Platform
  14. {
  15. public class MessageQueue
  16. {
  17. public static Message ParseMessage(IntPtr msgPointer)
  18. {
  19. Message msg = null;
  20. MessageType messageType = CLIB.ppf_Message_GetType(msgPointer);
  21. switch (messageType)
  22. {
  23. case MessageType.PlatformInitializeAndroidAsynchronous:
  24. {
  25. msg = new Message<PlatformInitializeResult>(msgPointer, ptr => { return (PlatformInitializeResult) CLIB.ppf_Message_GetInt32(ptr); });
  26. break;
  27. }
  28. case MessageType.CloudStorage_StartNewBackup:
  29. {
  30. msg = new Message(msgPointer);
  31. break;
  32. }
  33. #region speech
  34. case MessageType.Notification_Speech_OnAsrResult:
  35. {
  36. msg = new Message<AsrResult>(msgPointer, ptr =>
  37. {
  38. var obj = CLIB.ppf_Message_GetAsrResult(ptr);
  39. return new AsrResult(obj);
  40. });
  41. break;
  42. }
  43. case MessageType.Notification_Speech_OnSpeechError:
  44. {
  45. msg = new Message<SpeechError>(msgPointer, ptr =>
  46. {
  47. var obj = CLIB.ppf_Message_GetSpeechError(ptr);
  48. return new SpeechError(obj);
  49. });
  50. break;
  51. }
  52. #endregion
  53. #region Highlight
  54. case MessageType.Highlight_StartSession:
  55. {
  56. msg = new Message<string>(msgPointer, ptr => { return CLIB.ppf_Message_GetString(ptr); });
  57. break;
  58. }
  59. case MessageType.Highlight_CaptureScreen:
  60. {
  61. msg = new Message<CaptureInfo>(msgPointer, ptr =>
  62. {
  63. var obj = CLIB.ppf_Message_GetCaptureInfo(ptr);
  64. if (obj == IntPtr.Zero) return null;
  65. return new CaptureInfo(obj);
  66. });
  67. break;
  68. }
  69. case MessageType.Highlight_ListMedia:
  70. {
  71. msg = new Message<SessionMedia>(msgPointer, ptr =>
  72. {
  73. var obj = CLIB.ppf_Message_GetSessionMedia(ptr);
  74. if (obj == IntPtr.Zero) return null;
  75. return new SessionMedia(obj);
  76. });
  77. break;
  78. }
  79. case MessageType.Highlight_SaveMedia:
  80. case MessageType.Highlight_ShareMedia:
  81. case MessageType.Highlight_StartRecord:
  82. {
  83. msg = new Message(msgPointer);
  84. break;
  85. }
  86. case MessageType.Highlight_StopRecord:
  87. case MessageType.Notification_Highlight_OnRecordStop:
  88. {
  89. msg = new Message<RecordInfo>(msgPointer, ptr =>
  90. {
  91. var obj = CLIB.ppf_Message_GetRecordInfo(ptr);
  92. if (obj == IntPtr.Zero) return null;
  93. return new RecordInfo(obj);
  94. });
  95. break;
  96. }
  97. #endregion
  98. #region compliance
  99. case MessageType.Compliance_DetectSensitive:
  100. {
  101. msg = new Message<DetectSensitiveResult>(msgPointer, ptr =>
  102. {
  103. var obj = CLIB.ppf_Message_GetDetectSensitiveResult(ptr);
  104. if (obj == IntPtr.Zero) return null;
  105. return new DetectSensitiveResult(obj);
  106. });
  107. break;
  108. }
  109. #endregion
  110. #region Sport
  111. case MessageType.Sport_GetSummary:
  112. {
  113. msg = new Message<SportSummary>(msgPointer, ptr =>
  114. {
  115. var obj = CLIB.ppf_Message_GetSportSummary(ptr);
  116. if (obj == IntPtr.Zero) return null;
  117. return new SportSummary(obj);
  118. });
  119. break;
  120. }
  121. case MessageType.Sport_GetDailySummary:
  122. {
  123. msg = new Message<SportDailySummaryList>(msgPointer, ptr =>
  124. {
  125. var obj = CLIB.ppf_Message_GetSportDailySummaryArray(ptr);
  126. if (obj == IntPtr.Zero) return null;
  127. return new SportDailySummaryList(obj);
  128. });
  129. break;
  130. }
  131. case MessageType.Sport_GetUserInfo:
  132. {
  133. msg = new Message<SportUserInfo>(msgPointer, ptr =>
  134. {
  135. var obj = CLIB.ppf_Message_GetSportUserInfo(ptr);
  136. if (obj == IntPtr.Zero) return null;
  137. return new SportUserInfo(obj);
  138. });
  139. break;
  140. }
  141. #endregion
  142. #region User
  143. case MessageType.User_EntitlementCheck:
  144. {
  145. msg = new Message<EntitlementCheckResult>(msgPointer, ptr =>
  146. {
  147. var obj = CLIB.ppf_Message_GetEntitlementCheckResult(ptr);
  148. if (obj == IntPtr.Zero) return null;
  149. return new EntitlementCheckResult(obj);
  150. });
  151. break;
  152. }
  153. case MessageType.User_GetAuthorizedPermissions:
  154. case MessageType.User_RequestUserPermissions:
  155. {
  156. msg = new Message<PermissionResult>(msgPointer, ptr =>
  157. {
  158. var obj = CLIB.ppf_Message_GetPermissionResult(ptr);
  159. if (obj == IntPtr.Zero) return null;
  160. return new PermissionResult(obj);
  161. });
  162. break;
  163. }
  164. case MessageType.User_GetLoggedInUserFriendsAndRooms:
  165. {
  166. msg = new Message<UserRoomList>(msgPointer, ptr =>
  167. {
  168. var obj = CLIB.ppf_Message_GetUserAndRoomArray(ptr);
  169. if (obj == IntPtr.Zero) return null;
  170. var data = new UserRoomList(obj);
  171. return data;
  172. });
  173. break;
  174. }
  175. case MessageType.Presence_GetSentInvites:
  176. {
  177. msg = new Message<ApplicationInviteList>(msgPointer, ptr =>
  178. {
  179. var obj = CLIB.ppf_Message_GetApplicationInviteArray(ptr);
  180. if (obj == IntPtr.Zero) return null;
  181. var data = new ApplicationInviteList(obj);
  182. return data;
  183. });
  184. break;
  185. }
  186. case MessageType.Presence_SendInvites:
  187. {
  188. msg = new Message<SendInvitesResult>(msgPointer, ptr =>
  189. {
  190. var obj = CLIB.ppf_Message_GetSendInvitesResult(ptr);
  191. if (obj == IntPtr.Zero) return null;
  192. var data = new SendInvitesResult(obj);
  193. return data;
  194. });
  195. break;
  196. }
  197. case MessageType.Presence_GetDestinations:
  198. {
  199. msg = new Message<DestinationList>(msgPointer, ptr =>
  200. {
  201. var obj = CLIB.ppf_Message_GetDestinationArray(ptr);
  202. if (obj == IntPtr.Zero) return null;
  203. var data = new DestinationList(obj);
  204. return data;
  205. });
  206. break;
  207. }
  208. case MessageType.User_GetAccessToken:
  209. case MessageType.User_GetIdToken:
  210. case MessageType.Rtc_GetToken:
  211. case MessageType.Notification_Rtc_OnTokenWillExpire:
  212. case MessageType.Notification_Rtc_OnUserStartAudioCapture:
  213. case MessageType.Notification_Rtc_OnUserStopAudioCapture:
  214. case MessageType.Application_LaunchOtherApp:
  215. case MessageType.Application_LaunchStore:
  216. case MessageType.Notification_Room_InviteAccepted:
  217. case MessageType.Notification_Challenge_LaunchByInvite:
  218. case MessageType.Notification_ApplicationLifecycle_LaunchIntentChanged:
  219. {
  220. msg = new Message<string>(msgPointer, ptr => { return CLIB.ppf_Message_GetString(ptr); });
  221. break;
  222. }
  223. case MessageType.Notification_Presence_JoinIntentReceived:
  224. {
  225. msg = new Message<PresenceJoinIntent>(msgPointer, ptr =>
  226. {
  227. var obj = CLIB.ppf_Message_GetPresenceJoinIntent(ptr);
  228. if (obj == IntPtr.Zero) return null;
  229. return new PresenceJoinIntent(obj);
  230. });
  231. break;
  232. }
  233. case MessageType.Application_GetVersion:
  234. {
  235. msg = new Message<ApplicationVersion>(msgPointer, ptr =>
  236. {
  237. var obj = CLIB.ppf_Message_GetApplicationVersion(ptr);
  238. if (obj == IntPtr.Zero) return null;
  239. return new ApplicationVersion(obj);
  240. });
  241. break;
  242. }
  243. case MessageType.User_GetLoggedInUser:
  244. case MessageType.User_Get:
  245. {
  246. msg = new Message<User>(msgPointer, ptr =>
  247. {
  248. var obj = CLIB.ppf_Message_GetUser(ptr);
  249. if (obj == IntPtr.Zero) return null;
  250. return new User(obj);
  251. });
  252. break;
  253. }
  254. case MessageType.User_GetOrgScopedID:
  255. {
  256. msg = new Message<OrgScopedID>(msgPointer, ptr =>
  257. {
  258. var obj = CLIB.ppf_Message_GetOrgScopedID(ptr);
  259. if (obj == IntPtr.Zero) return null;
  260. return new OrgScopedID(obj);
  261. });
  262. break;
  263. }
  264. case MessageType.User_LaunchFriendRequestFlow:
  265. {
  266. msg = new Message<LaunchFriendResult>(msgPointer, ptr =>
  267. {
  268. var obj = CLIB.ppf_Message_GetLaunchFriendRequestFlowResult(ptr);
  269. if (obj == IntPtr.Zero) return null;
  270. return new LaunchFriendResult(obj);
  271. });
  272. break;
  273. }
  274. case MessageType.User_GetLoggedInUserFriends:
  275. case MessageType.Room_GetInvitableUsers2:
  276. case MessageType.Presence_GetInvitableUsers:
  277. {
  278. msg = new Message<UserList>(msgPointer, ptr =>
  279. {
  280. var obj = CLIB.ppf_Message_GetUserArray(ptr);
  281. if (obj == IntPtr.Zero) return null;
  282. return new UserList(obj);
  283. });
  284. break;
  285. }
  286. case MessageType.User_GetRelations:
  287. {
  288. msg = new Message<UserRelationResult>(msgPointer, ptr =>
  289. {
  290. var obj = CLIB.ppf_Message_GetUserRelationResult(ptr);
  291. if (obj == IntPtr.Zero) return null;
  292. return new UserRelationResult(obj);
  293. });
  294. break;
  295. }
  296. #endregion
  297. #region RTC
  298. case MessageType.Notification_Rtc_OnRoomMessageReceived:
  299. {
  300. msg = new Message<RtcRoomMessageReceived>(msgPointer, ptr =>
  301. {
  302. var obj = CLIB.ppf_Message_GetRtcRoomMessageReceived(ptr);
  303. if (obj == IntPtr.Zero) return null;
  304. return new RtcRoomMessageReceived(obj);
  305. });
  306. break;
  307. }
  308. case MessageType.Notification_Rtc_OnUserMessageReceived:
  309. {
  310. msg = new Message<RtcUserMessageReceived>(msgPointer, ptr =>
  311. {
  312. var obj = CLIB.ppf_Message_GetRtcUserMessageReceived(ptr);
  313. if (obj == IntPtr.Zero) return null;
  314. return new RtcUserMessageReceived(obj);
  315. });
  316. break;
  317. }
  318. case MessageType.Notification_Rtc_OnRoomMessageSendResult:
  319. case MessageType.Notification_Rtc_OnUserMessageSendResult:
  320. {
  321. msg = new Message<RtcMessageSendResult>(msgPointer, ptr =>
  322. {
  323. var obj = CLIB.ppf_Message_GetRtcMessageSendResult(ptr);
  324. if (obj == IntPtr.Zero) return null;
  325. return new RtcMessageSendResult(obj);
  326. });
  327. break;
  328. }
  329. case MessageType.Notification_Rtc_OnRoomBinaryMessageReceived:
  330. case MessageType.Notification_Rtc_OnUserBinaryMessageReceived:
  331. {
  332. msg = new Message<RtcBinaryMessageReceived>(msgPointer, ptr =>
  333. {
  334. var obj = CLIB.ppf_Message_GetRtcBinaryMessageReceived(ptr);
  335. if (obj == IntPtr.Zero) return null;
  336. return new RtcBinaryMessageReceived(obj);
  337. });
  338. break;
  339. }
  340. case MessageType.Notification_Rtc_OnUserPublishScreen:
  341. case MessageType.Notification_Rtc_OnUserPublishStream:
  342. {
  343. msg = new Message<RtcUserPublishInfo>(msgPointer, ptr =>
  344. {
  345. var obj = CLIB.ppf_Message_GetRtcUserPublishInfo(ptr);
  346. if (obj == IntPtr.Zero) return null;
  347. return new RtcUserPublishInfo(ptr);
  348. });
  349. break;
  350. }
  351. case MessageType.Notification_Rtc_OnUserUnPublishScreen:
  352. case MessageType.Notification_Rtc_OnUserUnPublishStream:
  353. {
  354. msg = new Message<RtcUserUnPublishInfo>(msgPointer, ptr =>
  355. {
  356. var obj = CLIB.ppf_Message_GetRtcUserUnPublishInfo(ptr);
  357. if (obj == IntPtr.Zero)
  358. {
  359. return null;
  360. }
  361. return new RtcUserUnPublishInfo(obj);
  362. });
  363. break;
  364. }
  365. case MessageType.Notification_Rtc_OnStreamSyncInfoReceived:
  366. {
  367. msg = new Message<RtcStreamSyncInfo>(msgPointer, ptr =>
  368. {
  369. var obj = CLIB.ppf_Message_GetRtcStreamSyncInfo(ptr);
  370. if (obj == IntPtr.Zero) return null;
  371. return new RtcStreamSyncInfo(obj);
  372. });
  373. break;
  374. }
  375. case MessageType.Notification_Rtc_OnVideoDeviceStateChanged:
  376. {
  377. break;
  378. }
  379. case MessageType.Notification_Rtc_OnRoomError:
  380. {
  381. msg = new Message<RtcRoomError>(msgPointer, ptr =>
  382. {
  383. var obj = CLIB.ppf_Message_GetRtcRoomError(ptr);
  384. if (obj == IntPtr.Zero) return null;
  385. return new RtcRoomError(obj);
  386. });
  387. break;
  388. }
  389. case MessageType.Notification_Rtc_OnRoomWarn:
  390. {
  391. msg = new Message<RtcRoomWarn>(msgPointer, ptr =>
  392. {
  393. var obj = CLIB.ppf_Message_GetRtcRoomWarn(ptr);
  394. if (obj == IntPtr.Zero) return null;
  395. return new RtcRoomWarn(obj);
  396. });
  397. break;
  398. }
  399. case MessageType.Notification_Rtc_OnConnectionStateChange:
  400. {
  401. msg = new Message<RtcConnectionState>(msgPointer, ptr => { return (RtcConnectionState) CLIB.ppf_Message_GetInt32(ptr); });
  402. break;
  403. }
  404. case MessageType.Notification_Rtc_OnError:
  405. case MessageType.Notification_Rtc_OnWarn:
  406. {
  407. msg = new Message<Int32>(msgPointer, ptr => { return CLIB.ppf_Message_GetInt32(ptr); });
  408. break;
  409. }
  410. case MessageType.Notification_Rtc_OnRoomStats:
  411. {
  412. msg = new Message<RtcRoomStats>(msgPointer, ptr =>
  413. {
  414. var obj = CLIB.ppf_Message_GetRtcRoomStats(ptr);
  415. if (obj == IntPtr.Zero) return null;
  416. return new RtcRoomStats(obj);
  417. });
  418. break;
  419. }
  420. case MessageType.Notification_Rtc_OnJoinRoom:
  421. {
  422. msg = new Message<RtcJoinRoomResult>(msgPointer, ptr =>
  423. {
  424. var obj = CLIB.ppf_Message_GetRtcJoinRoomResult(ptr);
  425. if (obj == IntPtr.Zero) return null;
  426. return new RtcJoinRoomResult(obj);
  427. });
  428. break;
  429. }
  430. case MessageType.Notification_Rtc_OnLeaveRoom:
  431. {
  432. msg = new Message<RtcLeaveRoomResult>(msgPointer, ptr =>
  433. {
  434. var obj = CLIB.ppf_Message_GetRtcLeaveRoomResult(ptr);
  435. if (obj == IntPtr.Zero) return null;
  436. return new RtcLeaveRoomResult(obj);
  437. });
  438. break;
  439. }
  440. case MessageType.Notification_Rtc_OnUserLeaveRoom:
  441. {
  442. msg = new Message<RtcUserLeaveInfo>(msgPointer, ptr =>
  443. {
  444. var obj = CLIB.ppf_Message_GetRtcUserLeaveInfo(ptr);
  445. if (obj == IntPtr.Zero) return null;
  446. return new RtcUserLeaveInfo(obj);
  447. });
  448. break;
  449. }
  450. case MessageType.Notification_Rtc_OnUserJoinRoom:
  451. {
  452. msg = new Message<RtcUserJoinInfo>(msgPointer, ptr =>
  453. {
  454. var obj = CLIB.ppf_Message_GetRtcUserJoinInfo(ptr);
  455. if (obj == IntPtr.Zero) return null;
  456. return new RtcUserJoinInfo(obj);
  457. });
  458. break;
  459. }
  460. case MessageType.Notification_Rtc_OnAudioPlaybackDeviceChanged:
  461. {
  462. msg = new Message<RtcAudioPlaybackDevice>(msgPointer, ptr => { return (RtcAudioPlaybackDevice) CLIB.ppf_Message_GetInt32(ptr); });
  463. break;
  464. }
  465. case MessageType.Notification_Rtc_OnMediaDeviceStateChanged:
  466. {
  467. msg = new Message<RtcMediaDeviceChangeInfo>(msgPointer, ptr =>
  468. {
  469. var obj = CLIB.ppf_Message_GetRtcMediaDeviceChangeInfo(ptr);
  470. if (obj == IntPtr.Zero) return null;
  471. return new RtcMediaDeviceChangeInfo(obj);
  472. });
  473. break;
  474. }
  475. case MessageType.Notification_Rtc_OnLocalAudioPropertiesReport:
  476. {
  477. msg = new Message<RtcLocalAudioPropertiesReport>(msgPointer, ptr =>
  478. {
  479. var obj = CLIB.ppf_Message_GetRtcLocalAudioPropertiesReport(ptr);
  480. if (obj == IntPtr.Zero) return null;
  481. return new RtcLocalAudioPropertiesReport(obj);
  482. });
  483. break;
  484. }
  485. case MessageType.Notification_Rtc_OnRemoteAudioPropertiesReport:
  486. {
  487. msg = new Message<RtcRemoteAudioPropertiesReport>(msgPointer, ptr =>
  488. {
  489. var obj = CLIB.ppf_Message_GetRtcRemoteAudioPropertiesReport(ptr);
  490. if (obj == IntPtr.Zero) return null;
  491. return new RtcRemoteAudioPropertiesReport(obj);
  492. });
  493. break;
  494. }
  495. case MessageType.Notification_Rtc_OnUserMuteAudio:
  496. {
  497. msg = new Message<RtcMuteInfo>(msgPointer, ptr =>
  498. {
  499. var obj = CLIB.ppf_Message_GetRtcMuteInfo(ptr);
  500. if (obj == IntPtr.Zero) return null;
  501. return new RtcMuteInfo(obj);
  502. });
  503. break;
  504. }
  505. #endregion
  506. #region IAP
  507. case MessageType.IAP_GetViewerPurchases:
  508. {
  509. msg = new Message<PurchaseList>(msgPointer, ptr =>
  510. {
  511. var obj = CLIB.ppf_Message_GetPurchaseArray(ptr);
  512. if (obj == IntPtr.Zero) return null;
  513. return new PurchaseList(obj);
  514. });
  515. break;
  516. }
  517. case MessageType.IAP_GetSubscriptionStatus:
  518. {
  519. msg = new Message<SubscriptionStatus>(msgPointer, ptr =>
  520. {
  521. var obj = CLIB.ppf_Message_GetSubscriptionStatus(ptr);
  522. if (obj == IntPtr.Zero) return null;
  523. return new SubscriptionStatus(obj);
  524. });
  525. break;
  526. }
  527. case MessageType.IAP_LaunchCheckoutFlow:
  528. {
  529. msg = new Message<Purchase>(msgPointer, ptr =>
  530. {
  531. var obj = CLIB.ppf_Message_GetPurchase(ptr);
  532. if (obj == IntPtr.Zero) return null;
  533. return new Purchase(obj);
  534. });
  535. break;
  536. }
  537. case MessageType.IAP_GetProductsBySKU:
  538. {
  539. msg = new Message<ProductList>(msgPointer, ptr =>
  540. {
  541. var obj = CLIB.ppf_Message_GetProductArray(ptr);
  542. if (obj == IntPtr.Zero) return null;
  543. return new ProductList(obj);
  544. });
  545. break;
  546. }
  547. #endregion
  548. #region DLC
  549. case MessageType.AssetFile_DeleteById:
  550. case MessageType.AssetFile_DeleteByName:
  551. {
  552. msg = new Message<AssetFileDeleteResult>(msgPointer, ptr =>
  553. {
  554. var obj = CLIB.ppf_Message_GetAssetFileDeleteResult(ptr);
  555. if (obj == IntPtr.Zero) return null;
  556. return new AssetFileDeleteResult(obj);
  557. });
  558. break;
  559. }
  560. case MessageType.AssetFile_DownloadById:
  561. case MessageType.AssetFile_DownloadByName:
  562. {
  563. msg = new Message<AssetFileDownloadResult>(msgPointer, ptr =>
  564. {
  565. var obj = CLIB.ppf_Message_GetAssetFileDownloadResult(ptr);
  566. if (obj == IntPtr.Zero) return null;
  567. return new AssetFileDownloadResult(obj);
  568. });
  569. break;
  570. }
  571. case MessageType.AssetFile_DownloadCancelById:
  572. case MessageType.AssetFile_DownloadCancelByName:
  573. {
  574. msg = new Message<AssetFileDownloadCancelResult>(msgPointer, ptr =>
  575. {
  576. var obj = CLIB.ppf_Message_GetAssetFileDownloadCancelResult(ptr);
  577. if (obj == IntPtr.Zero) return null;
  578. return new AssetFileDownloadCancelResult(obj);
  579. });
  580. break;
  581. }
  582. case MessageType.AssetFile_GetList:
  583. case MessageType.AssetFile_GetNextAssetDetailsArrayPage:
  584. {
  585. msg = new Message<AssetDetailsList>(msgPointer, ptr =>
  586. {
  587. var obj = CLIB.ppf_Message_GetAssetDetailsArray(ptr);
  588. if (obj == IntPtr.Zero) return null;
  589. return new AssetDetailsList(obj);
  590. });
  591. break;
  592. }
  593. case MessageType.AssetFile_StatusById:
  594. case MessageType.AssetFile_StatusByName:
  595. {
  596. msg = new Message<AssetStatus>(msgPointer, ptr =>
  597. {
  598. var obj = CLIB.ppf_Message_GetAssetStatus(ptr);
  599. if (obj == IntPtr.Zero) return null;
  600. return new AssetStatus(obj);
  601. });
  602. break;
  603. }
  604. case MessageType.Notification_AssetFile_DownloadUpdate:
  605. {
  606. msg = new Message<AssetFileDownloadUpdate>(msgPointer, ptr =>
  607. {
  608. var obj = CLIB.ppf_Message_GetAssetFileDownloadUpdate(ptr);
  609. if (obj == IntPtr.Zero) return null;
  610. return new AssetFileDownloadUpdate(obj);
  611. });
  612. break;
  613. }
  614. case MessageType.Notification_AssetFile_DeleteForSafety:
  615. {
  616. msg = new Message<AssetFileDeleteForSafety>(msgPointer, ptr =>
  617. {
  618. var obj = CLIB.ppf_Message_GetAssetFileDeleteForSafety(ptr);
  619. if (obj == IntPtr.Zero) return null;
  620. return new AssetFileDeleteForSafety(obj);
  621. });
  622. break;
  623. }
  624. #endregion
  625. #region stark game
  626. case MessageType.Matchmaking_Cancel2:
  627. case MessageType.Matchmaking_ReportResultInsecure:
  628. case MessageType.Matchmaking_StartMatch:
  629. case MessageType.Room_LaunchInvitableUserFlow:
  630. case MessageType.Challenges_LaunchInvitableUserFlow:
  631. case MessageType.Room_UpdateOwner:
  632. case MessageType.Notification_MarkAsRead:
  633. case MessageType.Notification_Game_StateReset:
  634. case MessageType.Presence_Clear:
  635. case MessageType.Presence_Set:
  636. case MessageType.IAP_ConsumePurchase:
  637. case MessageType.Presence_LaunchInvitePanel:
  638. case MessageType.Presence_ShareMedia:
  639. {
  640. msg = new Message(msgPointer);
  641. break;
  642. }
  643. case MessageType.Matchmaking_GetAdminSnapshot:
  644. {
  645. msg = new Message<MatchmakingAdminSnapshot>(msgPointer, ptr =>
  646. {
  647. var obj = CLIB.ppf_Message_GetMatchmakingAdminSnapshot(ptr);
  648. return new MatchmakingAdminSnapshot(obj);
  649. });
  650. break;
  651. }
  652. case MessageType.Matchmaking_Browse2:
  653. {
  654. msg = new Message<MatchmakingBrowseResult>(msgPointer, ptr =>
  655. {
  656. var obj = CLIB.ppf_Message_GetMatchmakingBrowseResult(ptr);
  657. return new MatchmakingBrowseResult(obj);
  658. });
  659. break;
  660. }
  661. case MessageType.Matchmaking_Browse2CustomPage:
  662. {
  663. msg = new Message<MatchmakingBrowseResult>(msgPointer, ptr =>
  664. {
  665. var obj = CLIB.ppf_Message_GetMatchmakingBrowseCustomPageResult(ptr);
  666. return new MatchmakingBrowseResult(obj);
  667. });
  668. break;
  669. }
  670. case MessageType.Matchmaking_Enqueue2:
  671. case MessageType.Matchmaking_EnqueueRoom2:
  672. {
  673. msg = new Message<MatchmakingEnqueueResult>(msgPointer, ptr =>
  674. {
  675. var obj = CLIB.ppf_Message_GetMatchmakingEnqueueResult(ptr);
  676. return new MatchmakingEnqueueResult(obj);
  677. });
  678. break;
  679. }
  680. case MessageType.Matchmaking_CreateAndEnqueueRoom2:
  681. {
  682. msg = new Message<MatchmakingEnqueueResultAndRoom>(msgPointer, ptr =>
  683. {
  684. var obj = CLIB.ppf_Message_GetMatchmakingEnqueueResultAndRoom(ptr);
  685. return new MatchmakingEnqueueResultAndRoom(obj);
  686. });
  687. break;
  688. }
  689. case MessageType.Matchmaking_GetStats:
  690. {
  691. msg = new Message<MatchmakingStats>(msgPointer, ptr =>
  692. {
  693. var obj = CLIB.ppf_Message_GetMatchmakingStats(ptr);
  694. return new MatchmakingStats(obj);
  695. });
  696. break;
  697. }
  698. case MessageType.Room_GetCurrent:
  699. case MessageType.Room_GetCurrentForUser:
  700. case MessageType.Notification_Room_RoomUpdate:
  701. case MessageType.Room_CreateAndJoinPrivate:
  702. case MessageType.Room_CreateAndJoinPrivate2:
  703. case MessageType.Room_InviteUser:
  704. case MessageType.Room_Join:
  705. case MessageType.Room_Join2:
  706. case MessageType.Room_JoinNamed:
  707. case MessageType.Room_KickUser:
  708. case MessageType.Room_Leave:
  709. case MessageType.Room_SetDescription:
  710. case MessageType.Room_UpdateDataStore:
  711. case MessageType.Room_UpdateMembershipLockStatus:
  712. case MessageType.Room_UpdatePrivateRoomJoinPolicy:
  713. case MessageType.Notification_Matchmaking_MatchFound:
  714. case MessageType.Room_Get:
  715. {
  716. msg = new Message<Room>(msgPointer, ptr =>
  717. {
  718. var obj = CLIB.ppf_Message_GetRoom(ptr);
  719. return new Room(obj);
  720. });
  721. break;
  722. }
  723. case MessageType.Room_GetModeratedRooms:
  724. case MessageType.Room_GetNamedRooms:
  725. case MessageType.Room_GetNextRoomArrayPage:
  726. {
  727. msg = new Message<RoomList>(msgPointer, ptr =>
  728. {
  729. var obj = CLIB.ppf_Message_GetRoomArray(ptr);
  730. return new RoomList(obj);
  731. });
  732. break;
  733. }
  734. case MessageType.PlatformGameInitializeAsynchronous:
  735. {
  736. msg = new Message<GameInitializeResult>(msgPointer, ptr =>
  737. {
  738. var objHandle = CLIB.ppf_Message_GetPlatformGameInitialize(ptr);
  739. var obj = CLIB.ppf_PlatformGameInitialize_GetResult(objHandle);
  740. return obj;
  741. });
  742. break;
  743. }
  744. case MessageType.Notification_Game_ConnectionEvent:
  745. {
  746. msg = new Message<GameConnectionEvent>(msgPointer, ptr =>
  747. {
  748. var obj = CLIB.ppf_Message_GetGameConnectionEvent(ptr);
  749. return obj;
  750. });
  751. break;
  752. }
  753. case MessageType.Notification_Game_RequestFailed:
  754. {
  755. msg = new Message<GameRequestFailedReason>(msgPointer, ptr =>
  756. {
  757. var obj = CLIB.ppf_Message_GetGameRequestFailedReason(ptr);
  758. return obj;
  759. });
  760. break;
  761. }
  762. case MessageType.Leaderboard_Get:
  763. case MessageType.Leaderboard_GetNextLeaderboardArrayPage:
  764. {
  765. msg = new Message<LeaderboardList>(msgPointer, ptr =>
  766. {
  767. var obj = CLIB.ppf_Message_GetLeaderboardArray(ptr);
  768. return new LeaderboardList(obj);
  769. });
  770. break;
  771. }
  772. case MessageType.Leaderboard_GetEntries:
  773. case MessageType.Leaderboard_GetEntriesAfterRank:
  774. case MessageType.Leaderboard_GetEntriesByIds:
  775. case MessageType.Leaderboard_GetNextEntries:
  776. case MessageType.Leaderboard_GetPreviousEntries:
  777. {
  778. msg = new Message<LeaderboardEntryList>(msgPointer, ptr =>
  779. {
  780. var obj = CLIB.ppf_Message_GetLeaderboardEntryArray(ptr);
  781. return new LeaderboardEntryList(obj);
  782. });
  783. break;
  784. }
  785. case MessageType.Leaderboard_WriteEntry:
  786. case MessageType.Leaderboard_WriteEntryWithSupplementaryMetric:
  787. {
  788. msg = new Message<bool>(msgPointer, ptr =>
  789. {
  790. var obj = CLIB.ppf_Message_GetLeaderboardUpdateStatus(ptr);
  791. return CLIB.ppf_LeaderboardUpdateStatus_GetDidUpdate(obj);
  792. });
  793. break;
  794. }
  795. case MessageType.Achievements_GetAllDefinitions:
  796. case MessageType.Achievements_GetDefinitionsByName:
  797. case MessageType.Achievements_GetNextAchievementDefinitionArrayPage:
  798. msg = new Message<AchievementDefinitionList>(msgPointer, ptr =>
  799. {
  800. var obj = CLIB.ppf_Message_GetAchievementDefinitionArray(ptr);
  801. return new AchievementDefinitionList(obj);
  802. });
  803. break;
  804. case MessageType.Achievements_GetAllProgress:
  805. case MessageType.Achievements_GetNextAchievementProgressArrayPage:
  806. case MessageType.Achievements_GetProgressByName:
  807. msg = new Message<AchievementProgressList>(msgPointer, ptr =>
  808. {
  809. var obj = CLIB.ppf_Message_GetAchievementProgressArray(ptr);
  810. return new AchievementProgressList(obj);
  811. });
  812. break;
  813. case MessageType.Achievements_AddCount:
  814. case MessageType.Achievements_AddFields:
  815. case MessageType.Achievements_Unlock:
  816. msg = new Message<AchievementUpdate>(msgPointer, ptr =>
  817. {
  818. var obj = CLIB.ppf_Message_GetAchievementUpdate(ptr);
  819. return new AchievementUpdate(obj);
  820. });
  821. break;
  822. case MessageType.Notification_GetNextRoomInviteNotificationArrayPage:
  823. case MessageType.Notification_GetRoomInvites:
  824. {
  825. msg = new Message<RoomInviteNotificationList>(msgPointer, ptr =>
  826. {
  827. var obj = CLIB.ppf_Message_GetRoomInviteNotificationArray(ptr);
  828. return new RoomInviteNotificationList(obj);
  829. });
  830. break;
  831. }
  832. case MessageType.Challenges_Invite:
  833. case MessageType.Challenges_Get:
  834. case MessageType.Challenges_Join:
  835. case MessageType.Challenges_Leave:
  836. {
  837. msg = new Message<Challenge>(msgPointer, ptr =>
  838. {
  839. var obj = CLIB.ppf_Message_GetChallenge(ptr);
  840. return new Challenge(obj);
  841. });
  842. break;
  843. }
  844. case MessageType.Challenges_GetList:
  845. {
  846. msg = new Message<ChallengeList>(msgPointer, ptr =>
  847. {
  848. var obj = CLIB.ppf_Message_GetChallengeArray(ptr);
  849. return new ChallengeList(obj);
  850. });
  851. break;
  852. }
  853. case MessageType.Challenges_GetEntries:
  854. case MessageType.Challenges_GetEntriesAfterRank:
  855. case MessageType.Challenges_GetEntriesByIds:
  856. {
  857. msg = new Message<ChallengeEntryList>(msgPointer, ptr =>
  858. {
  859. var obj = CLIB.ppf_Message_GetChallengeEntryArray(ptr);
  860. return new ChallengeEntryList(obj);
  861. });
  862. break;
  863. }
  864. #endregion stark game
  865. default:
  866. break;
  867. }
  868. return msg;
  869. }
  870. }
  871. }
粤ICP备19079148号