Resource Tuner
Loading...
Searching...
No Matches
RequestQueue.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef REQUEST_QUEUE_H
5#define REQUEST_QUEUE_H
6
7#include "Common.h"
8#include "Utils.h"
9#include "Request.h"
10#include "OrderedQueue.h"
11#include "RequestManager.h"
12
18class RequestQueue : public OrderedQueue {
19private:
20 static std::shared_ptr<RequestQueue> mRequestQueueInstance;
21 static std::mutex instanceProtectionLock;
22
24
25public:
27
29
30 static std::shared_ptr<RequestQueue> getInstance() {
31 if(mRequestQueueInstance == nullptr) {
32 instanceProtectionLock.lock();
33 if(mRequestQueueInstance == nullptr) {
34 try {
35 mRequestQueueInstance = std::shared_ptr<RequestQueue> (new RequestQueue());
36 } catch(const std::bad_alloc& e) {
37 instanceProtectionLock.unlock();
38 return nullptr;
39 }
40 }
41 instanceProtectionLock.unlock();
42 }
43 return mRequestQueueInstance;
44 }
45};
46
47#endif
This class represents a mutex-protected multiple producer, single consumer priority queue.
This class represents a mutex-protected multiple producer, single consumer priority queue.
void orderedQueueConsumerHook()
Provides a mechanism, to hook or plug-in the Consumer Code.