Resource Tuner
Loading...
Searching...
No Matches
RequestManager.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef REQUEST_MANAGER_H
5#define REQUEST_MANAGER_H
6
7#include <unordered_set>
8#include <unordered_map>
9#include <memory>
10
11#include "Request.h"
12#include "CocoTable.h"
13#include "ClientDataManager.h"
14
15enum RequestListType {
16 ACTIVE_TUNE,
17 PENDING_TUNE,
18};
19
20enum RequestProcessingStatus {
21 REQ_UNCHANGED = -2,
22 REQ_CANCELLED,
23 REQ_COMPLETED
24};
25
34private:
35 static std::shared_ptr<RequestManager> mReqeustManagerInstance;
36 static std::mutex instanceProtectionLock;
37
38 int64_t mActiveRequestCount;
39 std::unordered_set<Request*> mRequestsList[4];
40 std::unordered_map<int64_t, Request*> mActiveRequests;
41 std::unordered_map<int64_t, int64_t> mRequestProcessingStatus;
42 std::shared_timed_mutex mRequestMapMutex;
43
45
46 int8_t checkOwnership(Request* request, Request* targetRequest);
47 int8_t isSane(Request* request);
48 int8_t requestMatch(Request* request);
49
50public:
52
61 int8_t verifyHandle(int64_t handle);
62
71 int8_t shouldRequestBeAdded(Request* request);
72
78 void addRequest(Request* request);
79
84 void removeRequest(Request* request);
85
92 Request* getRequestFromMap(int64_t handle);
93
99
111 void disableRequestProcessing(int64_t handle);
112
113 void modifyRequestDuration(int64_t handle, int64_t duration);
114
115 void markRequestAsComplete(int64_t handle);
116
117 int64_t getRequestProcessingStatus(int64_t handle);
118
119 std::vector<Request*> getPendingList();
120
131
132 void clearPending();
133
134 static std::shared_ptr<RequestManager> getInstance() {
135 if(mReqeustManagerInstance == nullptr) {
136 instanceProtectionLock.lock();
137 if(mReqeustManagerInstance == nullptr) {
138 try {
139 mReqeustManagerInstance = std::shared_ptr<RequestManager> (new RequestManager());
140 } catch(const std::bad_alloc& e) {
141 instanceProtectionLock.unlock();
142 return nullptr;
143 }
144 }
145 instanceProtectionLock.unlock();
146 }
147 return mReqeustManagerInstance;
148 }
149};
150
151#endif
RequestManager.
void moveToPendingList()
Handles Device Mode transition from RESUME to SUSPEND.
void disableRequestProcessing(int64_t handle)
Mark the Request Handle, so that the Request won't be applied.
Request * getRequestFromMap(int64_t handle)
Retrieve the Request with the given Handle.
void addRequest(Request *request)
Add the specified request to the RequestMap.
int64_t getActiveReqeustsCount()
Get the current Global Active Requests Count.
void removeRequest(Request *request)
Remove a given request from the RequestMap.
int8_t verifyHandle(int64_t handle)
Check if a Request with the specified handle exists in the RequestMap.
int8_t shouldRequestBeAdded(Request *request)
Checks whether the specified Request should be added to the RequestMap.
Encapsulation type for a Resource Provisioning Request.
Definition Request.h:28