mirror of
https://github.com/QuasarApp/Heart.git
synced 2025-04-28 10:44:39 +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;
|
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 {
|
QList<HostAddress> AbstractNode::connectionsList() const {
|
||||||
QMutexLocker locer(&_connectionsMutex);
|
QMutexLocker locer(&_connectionsMutex);
|
||||||
|
|
||||||
|
@ -593,18 +593,6 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual void nodeDisconnected(AbstractNodeInfo *node);
|
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;
|
void prepareForDelete() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -615,23 +603,6 @@ protected:
|
|||||||
*/
|
*/
|
||||||
QSharedPointer<PKG::AbstractData> prepareData(const Package& pkg) const;
|
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
|
* @brief connectionsList This method return list of all node connections
|
||||||
* @return list of node connections.
|
* @return list of node connections.
|
||||||
@ -794,7 +765,6 @@ private:
|
|||||||
mutable QMutex _workersMutex;
|
mutable QMutex _workersMutex;
|
||||||
|
|
||||||
QThreadPool *_threadPool = nullptr;
|
QThreadPool *_threadPool = nullptr;
|
||||||
QHash<unsigned short, std::function<PKG::AbstractData*()>> _registeredTypes;
|
|
||||||
|
|
||||||
friend class WebSocketController;
|
friend class WebSocketController;
|
||||||
friend class SocketFactory;
|
friend class SocketFactory;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "iparser.h"
|
#include "iparser.h"
|
||||||
|
|
||||||
|
#include <abstractdata.h>
|
||||||
|
|
||||||
namespace QH {
|
namespace QH {
|
||||||
|
|
||||||
iParser::iParser() {
|
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:
|
public:
|
||||||
iParser();
|
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.
|
* @brief parsePackage This is main method of all childs classes of an AbstractNode class.
|
||||||
* This method work on own thread.
|
* This method work on own thread.
|
||||||
@ -153,6 +164,34 @@ public:
|
|||||||
return QH::ParserResult::NotProcessed;
|
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