1 /*
2  * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
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 
16 #include "deferred_photo_job.h"
17 #include "dp_log.h"
18 
19 namespace OHOS {
20 namespace CameraStandard {
21 namespace DeferredProcessing {
22 
23 
DeferredPhotoWork(DeferredPhotoJobPtr jobPtr,ExecutionMode mode)24 DeferredPhotoWork::DeferredPhotoWork(DeferredPhotoJobPtr jobPtr, ExecutionMode mode)
25     : jobPtr_(jobPtr),
26       executionMode_(mode)
27 {
28     //DPS_LOG
29 }
30 
~DeferredPhotoWork()31 DeferredPhotoWork::~DeferredPhotoWork()
32 {
33     jobPtr_ = nullptr;
34 }
35 
GetDeferredPhotoJob()36 DeferredPhotoJobPtr DeferredPhotoWork::GetDeferredPhotoJob()
37 {
38     return jobPtr_;
39 }
40 
GetExecutionMode()41 ExecutionMode DeferredPhotoWork::GetExecutionMode()
42 {
43     return executionMode_;
44 }
45 
DeferredPhotoJob(const std::string & imageId,bool discardable,DpsMetadata & metadata)46 DeferredPhotoJob::DeferredPhotoJob(const std::string& imageId, bool discardable, DpsMetadata& metadata)
47     : imageId_(imageId),
48       discardable_(discardable),
49       metadata_(metadata),
50       prePriority_(PhotoJobPriority::NONE),
51       curPriority_(PhotoJobPriority::NONE),
52       runningPriority_(PhotoJobPriority::NONE),
53       preStatus_(PhotoJobStatus::NONE),
54       curStatus_(PhotoJobStatus::NONE),
55       photoJobType_(0)
56 {
57     //DPS_LOG
58 }
59 
~DeferredPhotoJob()60 DeferredPhotoJob::~DeferredPhotoJob()
61 {
62     //DPS_LOG
63 }
64 
GetCurPriority()65 PhotoJobPriority DeferredPhotoJob::GetCurPriority()
66 {
67     DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d",
68         imageId_.c_str(), curPriority_, prePriority_);
69     return curPriority_;
70 }
71 
GetPrePriority()72 PhotoJobPriority DeferredPhotoJob::GetPrePriority()
73 {
74     DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d",
75         imageId_.c_str(), curPriority_, prePriority_);
76     return prePriority_;
77 }
78 
GetRunningPriority()79 PhotoJobPriority DeferredPhotoJob::GetRunningPriority()
80 {
81     DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d,"
82         "running priority: %{public}d", imageId_.c_str(), curPriority_, prePriority_, runningPriority_);
83     return runningPriority_;
84 }
85 
GetCurStatus()86 PhotoJobStatus DeferredPhotoJob::GetCurStatus()
87 {
88     DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d",
89         imageId_.c_str(), curStatus_, preStatus_);
90     return curStatus_;
91 }
92 
GetPreStatus()93 PhotoJobStatus DeferredPhotoJob::GetPreStatus()
94 {
95     DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d",
96         imageId_.c_str(), curStatus_, preStatus_);
97     return preStatus_;
98 }
99 
GetImageId()100 std::string& DeferredPhotoJob::GetImageId()
101 {
102     return imageId_;
103 }
104 
105 
GetDeferredProcType()106 int DeferredPhotoJob::GetDeferredProcType()
107 {
108     int type;
109     metadata_.Get(DEFERRED_PROCESSING_TYPE_KEY, type);
110     DP_INFO_LOG("imageId: %s, deferred proc type: %{public}d", imageId_.c_str(), type);
111     return type;
112 }
113 
GetDiscardable()114 bool DeferredPhotoJob::GetDiscardable()
115 {
116     return discardable_;
117 }
118 
SetPhotoJobType(int photoJobType)119 void DeferredPhotoJob::SetPhotoJobType(int photoJobType)
120 {
121     photoJobType_ = photoJobType;
122 }
123 
GetPhotoJobType()124 int DeferredPhotoJob::GetPhotoJobType()
125 {
126     return photoJobType_;
127 }
128 
SetJobStatus(PhotoJobStatus status)129 bool DeferredPhotoJob::SetJobStatus(PhotoJobStatus status)
130 {
131     DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d, status to set: %{public}d",
132         imageId_.c_str(), curStatus_, preStatus_, status);
133     if (curStatus_ == status) {
134         return false;
135     } else {
136         preStatus_ = curStatus_;
137         curStatus_ = status;
138         return true;
139     }
140 }
141 
SetJobPriority(PhotoJobPriority priority)142 bool DeferredPhotoJob::SetJobPriority(PhotoJobPriority priority)
143 {
144     DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d, priority to set: %{public}d",
145         imageId_.c_str(), curPriority_, prePriority_, priority);
146     if (curPriority_ == priority) {
147         return false;
148     } else {
149         prePriority_ = curPriority_;
150         curPriority_ = priority;
151         return true;
152     }
153 }
154 
RecordJobRunningPriority()155 void DeferredPhotoJob::RecordJobRunningPriority()
156 {
157     DP_INFO_LOG("imageId: %s, priority recorded: %{public}d, current priority: %{public}d,"
158         "previous priority: %{public}d", imageId_.c_str(), curPriority_, prePriority_, curPriority_);
159     runningPriority_ = curPriority_;
160     return;
161 }
162 } // namespace DeferredProcessing
163 } // namespace CameraStandard
164 } // namespace OHOS