mirror of
https://github.com/QuasarApp/Heart.git
synced 2025-04-26 17:54:38 +00:00
move registration command metohds into iParser
This commit is contained in:
parent
b588a59cb7
commit
86c5cf0308
@ -1136,14 +1136,6 @@ QSharedPointer<AbstractData> AbstractNode::prepareData(const Package &pkg) const
|
||||
return value;
|
||||
}
|
||||
|
||||
QSharedPointer<AbstractData> AbstractNode::genPackage(unsigned short cmd) const {
|
||||
return QSharedPointer<AbstractData>(_registeredTypes.value(cmd, [](){return nullptr;})());
|
||||
}
|
||||
|
||||
bool AbstractNode::checkCommand(unsigned short cmd) const {
|
||||
return _registeredTypes.contains(cmd);
|
||||
}
|
||||
|
||||
QList<HostAddress> AbstractNode::connectionsList() const {
|
||||
QMutexLocker locer(&_connectionsMutex);
|
||||
|
||||
|
@ -593,18 +593,6 @@ protected:
|
||||
*/
|
||||
virtual void nodeDisconnected(AbstractNodeInfo *node);
|
||||
|
||||
|
||||
template<class T>
|
||||
/**
|
||||
* @brief registerPackageType This method register package type T.
|
||||
* This is need to prepare pacakge for parsing in the parsePackage method.
|
||||
*/
|
||||
void registerPackageType() {
|
||||
_registeredTypes[T::command()] = [](){
|
||||
return new T();
|
||||
};
|
||||
};
|
||||
|
||||
void prepareForDelete() override;
|
||||
|
||||
/**
|
||||
@ -615,23 +603,6 @@ protected:
|
||||
*/
|
||||
QSharedPointer<PKG::AbstractData> prepareData(const Package& pkg) const;
|
||||
|
||||
/**
|
||||
* @brief genPackage This is factory method that generate data pacakge objects by command.
|
||||
* All object should be registered before using this method.
|
||||
* @param cmd This is command of pacakge see Header::command.
|
||||
* @return shared pointer to new data object.
|
||||
* @see AbstractNode::registerPackageType
|
||||
* @see Header::command
|
||||
*/
|
||||
QSharedPointer<PKG::AbstractData> genPackage(unsigned short cmd) const ;
|
||||
|
||||
/**
|
||||
* @brief checkCommand This method check command are if registered type or not.
|
||||
* @brief cmd This is command of a verifiable package.
|
||||
* @return True if the package is registered in a node.
|
||||
*/
|
||||
bool checkCommand(unsigned short cmd) const;
|
||||
|
||||
/**
|
||||
* @brief connectionsList This method return list of all node connections
|
||||
* @return list of node connections.
|
||||
@ -794,7 +765,6 @@ private:
|
||||
mutable QMutex _workersMutex;
|
||||
|
||||
QThreadPool *_threadPool = nullptr;
|
||||
QHash<unsigned short, std::function<PKG::AbstractData*()>> _registeredTypes;
|
||||
|
||||
friend class WebSocketController;
|
||||
friend class SocketFactory;
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "iparser.h"
|
||||
|
||||
#include <abstractdata.h>
|
||||
|
||||
namespace QH {
|
||||
|
||||
iParser::iParser() {
|
||||
@ -19,4 +21,16 @@ QString iParser::pareseResultToString(const ParserResult &parseResult) const {
|
||||
}
|
||||
}
|
||||
|
||||
const QHash<unsigned short, std::function<PKG::AbstractData *()> > &
|
||||
iParser::registeredTypes() const {
|
||||
return _registeredTypes;
|
||||
}
|
||||
|
||||
QSharedPointer<PKG::AbstractData> iParser::genPackage(unsigned short cmd) const {
|
||||
return QSharedPointer<PKG::AbstractData>(_registeredTypes.value(cmd, [](){return nullptr;})());
|
||||
}
|
||||
|
||||
bool iParser::checkCommand(unsigned short cmd) const {
|
||||
return _registeredTypes.contains(cmd);
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,17 @@ class HEARTSHARED_EXPORT iParser
|
||||
public:
|
||||
iParser();
|
||||
|
||||
template<class T>
|
||||
/**
|
||||
* @brief registerPackageType This method register package type T.
|
||||
* This is need to prepare pacakge for parsing in the parsePackage method.
|
||||
*/
|
||||
void registerPackageType() {
|
||||
_registeredTypes[T::command()] = [](){
|
||||
return new T();
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief parsePackage This is main method of all childs classes of an AbstractNode class.
|
||||
* This method work on own thread.
|
||||
@ -153,6 +164,34 @@ public:
|
||||
return QH::ParserResult::NotProcessed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief registeredTypes This method return list of registered command.
|
||||
* @return list of registered command.
|
||||
* @see iParser::registerPackageType
|
||||
*/
|
||||
const QHash<unsigned short, std::function<PKG::AbstractData *()> > ®isteredTypes() const;
|
||||
|
||||
/**
|
||||
* @brief genPackage This is factory method that generate data pacakge objects by command.
|
||||
* All object should be registered before using this method.
|
||||
* @param cmd This is command of pacakge see Header::command.
|
||||
* @return shared pointer to new data object.
|
||||
* @see AbstractNode::registerPackageType
|
||||
* @see Header::command
|
||||
*/
|
||||
QSharedPointer<PKG::AbstractData> genPackage(unsigned short cmd) const ;
|
||||
|
||||
/**
|
||||
* @brief checkCommand This method check command are if registered type or not.
|
||||
* @brief cmd This is command of a verifiable package.
|
||||
* @return True if the package is registered in a node.
|
||||
*/
|
||||
bool checkCommand(unsigned short cmd) const;
|
||||
|
||||
private:
|
||||
QHash<unsigned short, std::function<PKG::AbstractData*()>> _registeredTypes;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user