• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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