mirror of
https://github.com/QuasarApp/qTbot.git
synced 2025-05-09 03:39:35 +00:00
added priority sustem
This commit is contained in:
parent
f8c04492fa
commit
bb22a69921
@ -37,6 +37,8 @@ const QByteArray &IBot::token() const {
|
||||
|
||||
void IBot::setToken(const QByteArray &newToken) {
|
||||
_token = newToken;
|
||||
_startTime = QDateTime::currentDateTime();
|
||||
|
||||
}
|
||||
|
||||
void IBot::incomeNewUpdate(const QSharedPointer<iUpdate> &message) {
|
||||
@ -96,6 +98,14 @@ QNetworkReply* IBot::sendRquestImpl(const QSharedPointer<iRequest> &rquest) {
|
||||
return networkReplay;
|
||||
}
|
||||
|
||||
QDateTime IBot::startTime() const {
|
||||
return _startTime;
|
||||
}
|
||||
|
||||
unsigned long long IBot::totalSentRequests() const {
|
||||
return _totalRequest;
|
||||
}
|
||||
|
||||
int IBot::parallelActiveNetworkThreads() const {
|
||||
return _parallelActiveNetworkThreads;
|
||||
}
|
||||
@ -121,7 +131,9 @@ QFuture<QByteArray>
|
||||
IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
|
||||
auto&& responce = QSharedPointer<QPromise<QByteArray>>::create();
|
||||
responce->start();
|
||||
_requestQueue.insert(rquest->priority(),
|
||||
|
||||
|
||||
_requestQueue.insert(makeKey(rquest->priority()),
|
||||
RequestData{rquest, "", responce});
|
||||
|
||||
_requestExecutor->start();
|
||||
@ -134,7 +146,7 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest,
|
||||
const QString &pathToResult) {
|
||||
auto&& responce = QSharedPointer<QPromise<QByteArray>>::create();
|
||||
responce->start();
|
||||
_requestQueue.insert(rquest->priority(),
|
||||
_requestQueue.insert(makeKey(rquest->priority()),
|
||||
RequestData{rquest, pathToResult, responce});
|
||||
|
||||
_requestExecutor->start();
|
||||
@ -173,7 +185,7 @@ void IBot::handleEcxecuteRequest() {
|
||||
return;
|
||||
}
|
||||
|
||||
auto&& requestData = _requestQueue.take(_requestQueue.lastKey());
|
||||
auto&& requestData = _requestQueue.take(_requestQueue.firstKey());
|
||||
|
||||
if (requestData.responceFilePath.size()) {
|
||||
sendRequestPrivate(requestData.request, requestData.responceFilePath, requestData.responce);
|
||||
@ -183,6 +195,13 @@ void IBot::handleEcxecuteRequest() {
|
||||
sendRequestPrivate(requestData.request, requestData.responce);
|
||||
}
|
||||
|
||||
unsigned long long IBot::makeKey(iRequest::RequestPriority priority) {
|
||||
unsigned long long key = _totalRequest;
|
||||
_totalRequest++;
|
||||
key = key | (static_cast<unsigned long long>(iRequest::RequestPriority::MaxPriorityValue - priority) << 56);
|
||||
return key;
|
||||
}
|
||||
|
||||
void IBot::sendRequestPrivate(const QSharedPointer<iRequest> &rquest,
|
||||
const QSharedPointer<QPromise<QByteArray> > &promise) {
|
||||
|
||||
|
@ -179,9 +179,31 @@ public:
|
||||
*/
|
||||
void setReqestLimitPerSecond(int newReqestLimitPerSecond);
|
||||
|
||||
/**
|
||||
* @brief parallelActiveNetworkThreads
|
||||
* @return
|
||||
*/
|
||||
int parallelActiveNetworkThreads() const;
|
||||
|
||||
/**
|
||||
* @brief setParallelActiveNetworkThreads
|
||||
* @param newParallelActiveNetworkThreads
|
||||
*/
|
||||
void setParallelActiveNetworkThreads(int newParallelActiveNetworkThreads);
|
||||
|
||||
/**
|
||||
* @brief totalSentRequests This is total prepared requests count of bot from the start.
|
||||
* @see startTime method to get start date time.
|
||||
* @return requests count.
|
||||
*/
|
||||
unsigned long long totalSentRequests() const;
|
||||
|
||||
/**
|
||||
* @brief startTime this is time when bol wil started.
|
||||
* @return
|
||||
*/
|
||||
QDateTime startTime() const;
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
@ -293,6 +315,7 @@ signals:
|
||||
private slots:
|
||||
void handleEcxecuteRequest();
|
||||
private:
|
||||
unsigned long long makeKey(iRequest::RequestPriority priority);
|
||||
void setCurrentParallelActiveNetworkThreads(int newParallelActiveNetworkThreads);
|
||||
|
||||
void sendRequestPrivate(const QSharedPointer<iRequest>& rquest,
|
||||
@ -310,7 +333,9 @@ private:
|
||||
QSet<unsigned long long> _processed;
|
||||
QNetworkAccessManager *_manager = nullptr;
|
||||
QTimer* _requestExecutor = nullptr;
|
||||
QMultiMap<int, RequestData> _requestQueue;
|
||||
unsigned long long _totalRequest = 0;
|
||||
QDateTime _startTime;
|
||||
QMap<unsigned long long, RequestData> _requestQueue;
|
||||
int _currentParallelActiveNetworkThreads = 0;
|
||||
int _parallelActiveNetworkThreads = 5;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user