internal static Message ParseMessageHandle()

in RealityMaterialExplorer/Assets/Oculus/Platform/Scripts/Message.cs [409:803]


    internal static Message ParseMessageHandle(IntPtr messageHandle)
    {
      if (messageHandle.ToInt64() == 0)
      {
        return null;
      }

      Message message = null;
      Message.MessageType message_type = (Message.MessageType)CAPI.ovr_Message_GetType(messageHandle);

      switch(message_type) {
        // OVR_MESSAGE_TYPE_START
        case Message.MessageType.Achievements_GetAllDefinitions:
        case Message.MessageType.Achievements_GetDefinitionsByName:
        case Message.MessageType.Achievements_GetNextAchievementDefinitionArrayPage:
          message = new MessageWithAchievementDefinitions(messageHandle);
          break;

        case Message.MessageType.Achievements_GetAllProgress:
        case Message.MessageType.Achievements_GetNextAchievementProgressArrayPage:
        case Message.MessageType.Achievements_GetProgressByName:
          message = new MessageWithAchievementProgressList(messageHandle);
          break;

        case Message.MessageType.Achievements_AddCount:
        case Message.MessageType.Achievements_AddFields:
        case Message.MessageType.Achievements_Unlock:
          message = new MessageWithAchievementUpdate(messageHandle);
          break;

        case Message.MessageType.Application_GetVersion:
          message = new MessageWithApplicationVersion(messageHandle);
          break;

        case Message.MessageType.AssetFile_Status:
        case Message.MessageType.AssetFile_StatusById:
        case Message.MessageType.AssetFile_StatusByName:
        case Message.MessageType.LanguagePack_GetCurrent:
          message = new MessageWithAssetDetails(messageHandle);
          break;

        case Message.MessageType.AssetFile_GetList:
          message = new MessageWithAssetDetailsList(messageHandle);
          break;

        case Message.MessageType.AssetFile_Delete:
        case Message.MessageType.AssetFile_DeleteById:
        case Message.MessageType.AssetFile_DeleteByName:
          message = new MessageWithAssetFileDeleteResult(messageHandle);
          break;

        case Message.MessageType.AssetFile_DownloadCancel:
        case Message.MessageType.AssetFile_DownloadCancelById:
        case Message.MessageType.AssetFile_DownloadCancelByName:
          message = new MessageWithAssetFileDownloadCancelResult(messageHandle);
          break;

        case Message.MessageType.AssetFile_Download:
        case Message.MessageType.AssetFile_DownloadById:
        case Message.MessageType.AssetFile_DownloadByName:
        case Message.MessageType.LanguagePack_SetCurrent:
          message = new MessageWithAssetFileDownloadResult(messageHandle);
          break;

        case Message.MessageType.Notification_AssetFile_DownloadUpdate:
          message = new MessageWithAssetFileDownloadUpdate(messageHandle);
          break;

        case Message.MessageType.Notification_Cal_FinalizeApplication:
          message = new MessageWithCalApplicationFinalized(messageHandle);
          break;

        case Message.MessageType.Notification_Cal_ProposeApplication:
          message = new MessageWithCalApplicationProposed(messageHandle);
          break;

        case Message.MessageType.Challenges_Create:
        case Message.MessageType.Challenges_DeclineInvite:
        case Message.MessageType.Challenges_Get:
        case Message.MessageType.Challenges_Join:
        case Message.MessageType.Challenges_Leave:
        case Message.MessageType.Challenges_UpdateInfo:
          message = new MessageWithChallenge(messageHandle);
          break;

        case Message.MessageType.Challenges_GetList:
        case Message.MessageType.Challenges_GetNextChallenges:
        case Message.MessageType.Challenges_GetPreviousChallenges:
          message = new MessageWithChallengeList(messageHandle);
          break;

        case Message.MessageType.Challenges_GetEntries:
        case Message.MessageType.Challenges_GetEntriesAfterRank:
        case Message.MessageType.Challenges_GetEntriesByIds:
        case Message.MessageType.Challenges_GetNextEntries:
        case Message.MessageType.Challenges_GetPreviousEntries:
          message = new MessageWithChallengeEntryList(messageHandle);
          break;

        case Message.MessageType.CloudStorage_LoadConflictMetadata:
          message = new MessageWithCloudStorageConflictMetadata(messageHandle);
          break;

        case Message.MessageType.CloudStorage_Load:
        case Message.MessageType.CloudStorage_LoadHandle:
          message = new MessageWithCloudStorageData(messageHandle);
          break;

        case Message.MessageType.CloudStorage_LoadMetadata:
          message = new MessageWithCloudStorageMetadataUnderLocal(messageHandle);
          break;

        case Message.MessageType.CloudStorage_GetNextCloudStorageMetadataArrayPage:
        case Message.MessageType.CloudStorage_LoadBucketMetadata:
          message = new MessageWithCloudStorageMetadataList(messageHandle);
          break;

        case Message.MessageType.CloudStorage_Delete:
        case Message.MessageType.CloudStorage_ResolveKeepLocal:
        case Message.MessageType.CloudStorage_ResolveKeepRemote:
        case Message.MessageType.CloudStorage_Save:
          message = new MessageWithCloudStorageUpdateResponse(messageHandle);
          break;

        case Message.MessageType.UserDataStore_PrivateGetEntries:
        case Message.MessageType.UserDataStore_PrivateGetEntryByKey:
          message = new MessageWithDataStoreUnderPrivateUserDataStore(messageHandle);
          break;

        case Message.MessageType.UserDataStore_PublicGetEntries:
        case Message.MessageType.UserDataStore_PublicGetEntryByKey:
          message = new MessageWithDataStoreUnderPublicUserDataStore(messageHandle);
          break;

        case Message.MessageType.RichPresence_GetDestinations:
        case Message.MessageType.RichPresence_GetNextDestinationArrayPage:
          message = new MessageWithDestinationList(messageHandle);
          break;

        case Message.MessageType.ApplicationLifecycle_RegisterSessionKey:
        case Message.MessageType.Challenges_Delete:
        case Message.MessageType.Entitlement_GetIsViewerEntitled:
        case Message.MessageType.IAP_ConsumePurchase:
        case Message.MessageType.Livestreaming_LaunchLivestreamingFlow:
        case Message.MessageType.Matchmaking_Cancel:
        case Message.MessageType.Matchmaking_Cancel2:
        case Message.MessageType.Matchmaking_ReportResultInsecure:
        case Message.MessageType.Matchmaking_StartMatch:
        case Message.MessageType.Notification_MarkAsRead:
        case Message.MessageType.RichPresence_Clear:
        case Message.MessageType.RichPresence_Set:
        case Message.MessageType.Room_LaunchInvitableUserFlow:
        case Message.MessageType.Room_UpdateOwner:
        case Message.MessageType.User_LaunchProfile:
          message = new Message(messageHandle);
          break;

        case Message.MessageType.Notification_GroupPresence_LeaveIntentReceived:
          message = new MessageWithGroupPresenceLeaveIntent(messageHandle);
          break;

        case Message.MessageType.User_LaunchFriendRequestFlow:
          message = new MessageWithLaunchFriendRequestFlowResult(messageHandle);
          break;

        case Message.MessageType.Notification_Session_InvitationsSent:
          message = new MessageWithLaunchInvitePanelFlowResult(messageHandle);
          break;

        case Message.MessageType.Leaderboard_Get:
        case Message.MessageType.Leaderboard_GetNextLeaderboardArrayPage:
          message = new MessageWithLeaderboardList(messageHandle);
          break;

        case Message.MessageType.Leaderboard_GetEntries:
        case Message.MessageType.Leaderboard_GetEntriesAfterRank:
        case Message.MessageType.Leaderboard_GetEntriesByIds:
        case Message.MessageType.Leaderboard_GetNextEntries:
        case Message.MessageType.Leaderboard_GetPreviousEntries:
          message = new MessageWithLeaderboardEntryList(messageHandle);
          break;

        case Message.MessageType.Leaderboard_WriteEntry:
        case Message.MessageType.Leaderboard_WriteEntryWithSupplementaryMetric:
          message = new MessageWithLeaderboardDidUpdate(messageHandle);
          break;

        case Message.MessageType.Livestreaming_GetStatus:
        case Message.MessageType.Livestreaming_PauseStream:
        case Message.MessageType.Livestreaming_ResumeStream:
        case Message.MessageType.Notification_Livestreaming_StatusChange:
          message = new MessageWithLivestreamingStatus(messageHandle);
          break;

        case Message.MessageType.Matchmaking_GetAdminSnapshot:
          message = new MessageWithMatchmakingAdminSnapshot(messageHandle);
          break;

        case Message.MessageType.Matchmaking_Browse:
        case Message.MessageType.Matchmaking_Browse2:
          message = new MessageWithMatchmakingBrowseResult(messageHandle);
          break;

        case Message.MessageType.Matchmaking_Enqueue:
        case Message.MessageType.Matchmaking_Enqueue2:
        case Message.MessageType.Matchmaking_EnqueueRoom:
        case Message.MessageType.Matchmaking_EnqueueRoom2:
          message = new MessageWithMatchmakingEnqueueResult(messageHandle);
          break;

        case Message.MessageType.Matchmaking_CreateAndEnqueueRoom:
        case Message.MessageType.Matchmaking_CreateAndEnqueueRoom2:
          message = new MessageWithMatchmakingEnqueueResultAndRoom(messageHandle);
          break;

        case Message.MessageType.Matchmaking_GetStats:
          message = new MessageWithMatchmakingStatsUnderMatchmakingStats(messageHandle);
          break;

        case Message.MessageType.Notification_NetSync_ConnectionStatusChanged:
          message = new MessageWithNetSyncConnection(messageHandle);
          break;

        case Message.MessageType.Notification_NetSync_SessionsChanged:
          message = new MessageWithNetSyncSessionsChangedNotification(messageHandle);
          break;

        case Message.MessageType.User_GetOrgScopedID:
          message = new MessageWithOrgScopedID(messageHandle);
          break;

        case Message.MessageType.Party_GetCurrent:
          message = new MessageWithPartyUnderCurrentParty(messageHandle);
          break;

        case Message.MessageType.Notification_Party_PartyUpdate:
          message = new MessageWithPartyUpdateNotification(messageHandle);
          break;

        case Message.MessageType.ApplicationLifecycle_GetRegisteredPIDs:
          message = new MessageWithPidList(messageHandle);
          break;

        case Message.MessageType.IAP_GetNextProductArrayPage:
        case Message.MessageType.IAP_GetProductsBySKU:
          message = new MessageWithProductList(messageHandle);
          break;

        case Message.MessageType.IAP_LaunchCheckoutFlow:
          message = new MessageWithPurchase(messageHandle);
          break;

        case Message.MessageType.IAP_GetNextPurchaseArrayPage:
        case Message.MessageType.IAP_GetViewerPurchases:
        case Message.MessageType.IAP_GetViewerPurchasesDurableCache:
          message = new MessageWithPurchaseList(messageHandle);
          break;

        case Message.MessageType.Room_Get:
          message = new MessageWithRoom(messageHandle);
          break;

        case Message.MessageType.Room_GetCurrent:
        case Message.MessageType.Room_GetCurrentForUser:
          message = new MessageWithRoomUnderCurrentRoom(messageHandle);
          break;

        case Message.MessageType.Matchmaking_CreateRoom:
        case Message.MessageType.Matchmaking_CreateRoom2:
        case Message.MessageType.Matchmaking_JoinRoom:
        case Message.MessageType.Notification_Room_RoomUpdate:
        case Message.MessageType.Room_CreateAndJoinPrivate:
        case Message.MessageType.Room_CreateAndJoinPrivate2:
        case Message.MessageType.Room_InviteUser:
        case Message.MessageType.Room_Join:
        case Message.MessageType.Room_Join2:
        case Message.MessageType.Room_KickUser:
        case Message.MessageType.Room_Leave:
        case Message.MessageType.Room_SetDescription:
        case Message.MessageType.Room_UpdateDataStore:
        case Message.MessageType.Room_UpdateMembershipLockStatus:
        case Message.MessageType.Room_UpdatePrivateRoomJoinPolicy:
          message = new MessageWithRoomUnderViewerRoom(messageHandle);
          break;

        case Message.MessageType.Room_GetModeratedRooms:
        case Message.MessageType.Room_GetNextRoomArrayPage:
          message = new MessageWithRoomList(messageHandle);
          break;

        case Message.MessageType.Notification_Room_InviteReceived:
          message = new MessageWithRoomInviteNotification(messageHandle);
          break;

        case Message.MessageType.Notification_GetNextRoomInviteNotificationArrayPage:
        case Message.MessageType.Notification_GetRoomInvites:
          message = new MessageWithRoomInviteNotificationList(messageHandle);
          break;

        case Message.MessageType.User_GetSdkAccounts:
          message = new MessageWithSdkAccountList(messageHandle);
          break;

        case Message.MessageType.Media_ShareToFacebook:
          message = new MessageWithShareMediaResult(messageHandle);
          break;

        case Message.MessageType.ApplicationLifecycle_GetSessionKey:
        case Message.MessageType.Application_LaunchOtherApp:
        case Message.MessageType.CloudStorage2_GetUserDirectoryPath:
        case Message.MessageType.Notification_ApplicationLifecycle_LaunchIntentChanged:
        case Message.MessageType.Notification_Room_InviteAccepted:
        case Message.MessageType.Notification_Vrcamera_GetSurfaceUpdate:
        case Message.MessageType.User_GetAccessToken:
          message = new MessageWithString(messageHandle);
          break;

        case Message.MessageType.Voip_SetSystemVoipSuppressed:
          message = new MessageWithSystemVoipState(messageHandle);
          break;

        case Message.MessageType.User_Get:
        case Message.MessageType.User_GetLoggedInUser:
          message = new MessageWithUser(messageHandle);
          break;

        case Message.MessageType.User_GetLoggedInUserFriendsAndRooms:
        case Message.MessageType.User_GetLoggedInUserRecentlyMetUsersAndRooms:
        case Message.MessageType.User_GetNextUserAndRoomArrayPage:
          message = new MessageWithUserAndRoomList(messageHandle);
          break;

        case Message.MessageType.Room_GetInvitableUsers:
        case Message.MessageType.Room_GetInvitableUsers2:
        case Message.MessageType.User_GetLoggedInUserFriends:
        case Message.MessageType.User_GetNextUserArrayPage:
          message = new MessageWithUserList(messageHandle);
          break;

        case Message.MessageType.UserDataStore_PrivateDeleteEntryByKey:
        case Message.MessageType.UserDataStore_PrivateWriteEntry:
        case Message.MessageType.UserDataStore_PublicDeleteEntryByKey:
        case Message.MessageType.UserDataStore_PublicWriteEntry:
          message = new MessageWithUserDataStoreUpdateResponse(messageHandle);
          break;

        case Message.MessageType.User_GetUserProof:
          message = new MessageWithUserProof(messageHandle);
          break;

        case Message.MessageType.Notification_Networking_ConnectionStateChange:
        case Message.MessageType.Notification_Networking_PeerConnectRequest:
          message = new MessageWithNetworkingPeer(messageHandle);
          break;

        case Message.MessageType.Notification_Networking_PingResult:
          message = new MessageWithPingResult(messageHandle);
          break;

        case Message.MessageType.Notification_Matchmaking_MatchFound:
          message = new MessageWithMatchmakingNotification(messageHandle);
          break;

        case Message.MessageType.Notification_Voip_ConnectRequest:
        case Message.MessageType.Notification_Voip_StateChange:
          message = new MessageWithNetworkingPeer(messageHandle);
        break;

        case Message.MessageType.Notification_Voip_SystemVoipState:
          message = new MessageWithSystemVoipState(messageHandle);
          break;

        case Message.MessageType.Notification_HTTP_Transfer:
          message = new MessageWithHttpTransferUpdate(messageHandle);
          break;

        case Message.MessageType.Platform_InitializeWithAccessToken:
        case Message.MessageType.Platform_InitializeStandaloneOculus:
        case Message.MessageType.Platform_InitializeAndroidAsynchronous:
        case Message.MessageType.Platform_InitializeWindowsAsynchronous:
          message = new MessageWithPlatformInitialize(messageHandle);
          break;

        default:
          message = PlatformInternal.ParseMessageHandle(messageHandle, message_type);
          if (message == null)
          {
            Debug.LogError(string.Format("Unrecognized message type {0}\n", message_type));
          }
          break;
          // OVR_MESSAGE_TYPE_END
      }

      return message;
    }