1 /* 2 * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef PLAYER_SERVER_MEM_STATE_H 16 #define PLAYER_SERVER_MEM_STATE_H 17 18 #include "player_server_mem.h" 19 20 namespace OHOS { 21 namespace Media { 22 class PlayerServerMem::MemBaseState { 23 public: MemBaseState(PlayerServerMem & playerServerMem,const std::string & name)24 MemBaseState(PlayerServerMem &playerServerMem, const std::string &name) 25 : playerServerMem_(playerServerMem), name_(name) {} 26 virtual ~MemBaseState() = default; 27 std::string GetStateName() const; 28 virtual int32_t MemStateRecover(); 29 virtual int32_t MemStateRelease(); 30 virtual int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra); 31 32 protected: 33 int32_t MemRecoverToInitialized(); 34 int32_t MemRecoverToPrepared(); 35 int32_t MemRecoverToCompleted(); 36 PlayerServerMem &playerServerMem_; 37 std::string name_; 38 }; 39 40 class PlayerServerMem::MemIdleState : public PlayerServerMem::MemBaseState { 41 public: MemIdleState(PlayerServerMem & playerServerMem)42 explicit MemIdleState(PlayerServerMem &playerServerMem) : MemBaseState(playerServerMem, "mem_idle_state") {} 43 ~MemIdleState() override = default; 44 }; 45 46 class PlayerServerMem::MemInitializedState : public PlayerServerMem::MemBaseState { 47 public: MemInitializedState(PlayerServerMem & playerServerMem)48 explicit MemInitializedState(PlayerServerMem &playerServerMem) 49 : MemBaseState(playerServerMem, "mem_initialize_state") {} 50 ~MemInitializedState() override = default; 51 int32_t MemStateRecover() override; 52 int32_t MemStateRelease() override; 53 int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra) override; 54 }; 55 56 class PlayerServerMem::MemPreparingState : public PlayerServerMem::MemBaseState { 57 public: MemPreparingState(PlayerServerMem & playerServerMem)58 explicit MemPreparingState(PlayerServerMem &playerServerMem) 59 : MemBaseState(playerServerMem, "mem_preparing_state") {} 60 ~MemPreparingState() override = default; 61 int32_t MemStateRecover() override; 62 int32_t MemStateRelease() override; 63 int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra) override; 64 }; 65 66 class PlayerServerMem::MemPreparedState : public PlayerServerMem::MemBaseState { 67 public: MemPreparedState(PlayerServerMem & playerServerMem)68 explicit MemPreparedState(PlayerServerMem &playerServerMem) 69 : MemBaseState(playerServerMem, "mem_prepared_state") {} 70 ~MemPreparedState() override = default; 71 int32_t MemStateRecover() override; 72 int32_t MemStateRelease() override; 73 int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra) override; 74 }; 75 76 class PlayerServerMem::MemPlayingState : public PlayerServerMem::MemBaseState { 77 public: MemPlayingState(PlayerServerMem & playerServerMem)78 explicit MemPlayingState(PlayerServerMem &playerServerMem) : MemBaseState(playerServerMem, "mem_playing_state") {} 79 ~MemPlayingState() override = default; 80 }; 81 82 class PlayerServerMem::MemPausedState : public PlayerServerMem::MemBaseState { 83 public: MemPausedState(PlayerServerMem & playerServerMem)84 explicit MemPausedState(PlayerServerMem &playerServerMem) : MemBaseState(playerServerMem, "mem_paused_state") {} 85 ~MemPausedState() override = default; 86 int32_t MemStateRecover() override; 87 int32_t MemStateRelease() override; 88 int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra) override; 89 }; 90 91 class PlayerServerMem::MemStoppedState : public PlayerServerMem::MemBaseState { 92 public: MemStoppedState(PlayerServerMem & playerServerMem)93 explicit MemStoppedState(PlayerServerMem &playerServerMem) : MemBaseState(playerServerMem, "mem_stopped_state") {} 94 ~MemStoppedState() override = default; 95 }; 96 97 class PlayerServerMem::MemPlaybackCompletedState : public PlayerServerMem::MemBaseState { 98 public: MemPlaybackCompletedState(PlayerServerMem & playerServerMem)99 explicit MemPlaybackCompletedState(PlayerServerMem &playerServerMem) 100 : MemBaseState(playerServerMem, "mem_playbackCompleted_state") {} 101 ~MemPlaybackCompletedState() override = default; 102 int32_t MemStateRecover() override; 103 int32_t MemStateRelease() override; 104 int32_t MemPlayerCbRecover(PlayerOnInfoType type, int32_t extra) override; 105 }; 106 } 107 } 108 #endif