1 // Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache-2.0 license that can be
3 // found in the LICENSE file.
5 #include "create_cache_request_handler.hh"
9 #include "cache_db_handler.hh"
10 #include "utils/logging.hh"
12 namespace psd = pkgmgr_server::database;
14 namespace pkgmgr_server {
15 namespace request_handler {
17 CreateCacheRequestHandler::Scheduler::Scheduler(pid_t tid) : tid_(tid) {
18 Get(&policy_, ¶m_);
21 void CreateCacheRequestHandler::Scheduler::ChangePolicy() {
22 struct sched_param param {
25 if (Set(SCHED_RR, ¶m) != 0)
30 LOG(WARNING) << "Current policy: " << policy
31 << ", priority: " << param.sched_priority;
34 void CreateCacheRequestHandler::Scheduler::ResetPolicy() {
35 if (Set(policy_, ¶m_) != 0)
38 struct sched_param param = {
43 LOG(WARNING) << "Current policy: " << policy
44 << ", priority: " << param.sched_priority;
47 void CreateCacheRequestHandler::Scheduler::Get(int* policy,
48 struct sched_param* param) {
49 if (sched_getparam(tid_, param) != 0)
50 LOG(ERROR) << "sched_getparam() is failed. errno: " << errno;
52 *policy = sched_getscheduler(tid_);
54 LOG(ERROR) << "sched_getscheduler() is failed. errno: " << errno;
57 int CreateCacheRequestHandler::Scheduler::Set(int policy,
58 struct sched_param* param) {
59 if (sched_setscheduler(tid_, policy, param) != 0) {
60 LOG(ERROR) << "sched_setscheduler() is failed. policy: " << policy
61 << ", errno: " << errno;
65 LOG(WARNING) << "policy: " << policy
66 << ", sched_priority: " << param->sched_priority;
70 CreateCacheRequestHandler::CreateCacheRequestHandler(): scheduler_(gettid()) {
73 bool CreateCacheRequestHandler::HandleRequest(unsigned char* data, int size,
74 const std::string& locale) {
75 // TODO(ilho159.kim) need to get logined user id
76 psd::CacheDBHandler db(5001, GetPID());
79 int ret = db.Execute();
81 return ret == PMINFO_R_OK;
84 std::vector<uint8_t> CreateCacheRequestHandler::ExtractResult() {
88 void CreateCacheRequestHandler::PreExec() {
89 scheduler_.ChangePolicy();
92 void CreateCacheRequestHandler::PostExec() {
93 scheduler_.ResetPolicy();
96 } // namespace request_handler
97 } // namespace pkgmgr_server