Make type name hash static const

This commit is contained in:
Atlante45 2018-01-10 17:28:27 -08:00
parent f05d650e0b
commit 482ca3f038
4 changed files with 18 additions and 36 deletions

View file

@ -63,13 +63,6 @@ LimitedNodeList::LimitedNodeList(int socketListenPort, int dtlsListenPort) :
_packetStatTimer(), _packetStatTimer(),
_permissions(NodePermissions()) _permissions(NodePermissions())
{ {
static bool firstCall = true;
if (firstCall) {
NodeType::init();
firstCall = false;
}
qRegisterMetaType<ConnectionStep>("ConnectionStep"); qRegisterMetaType<ConnectionStep>("ConnectionStep");
auto port = (socketListenPort != INVALID_PORT) ? socketListenPort : LIMITED_NODELIST_LOCAL_PORT.get(); auto port = (socketListenPort != INVALID_PORT) ? socketListenPort : LIMITED_NODELIST_LOCAL_PORT.get();
_nodeSocket.bind(QHostAddress::AnyIPv4, port); _nodeSocket.bind(QHostAddress::AnyIPv4, port);

View file

@ -29,28 +29,25 @@ int NodePtrMetaTypeId = qRegisterMetaType<Node*>("Node*");
int sharedPtrNodeMetaTypeId = qRegisterMetaType<QSharedPointer<Node>>("QSharedPointer<Node>"); int sharedPtrNodeMetaTypeId = qRegisterMetaType<QSharedPointer<Node>>("QSharedPointer<Node>");
int sharedNodePtrMetaTypeId = qRegisterMetaType<SharedNodePointer>("SharedNodePointer"); int sharedNodePtrMetaTypeId = qRegisterMetaType<SharedNodePointer>("SharedNodePointer");
void NodeType::init() { static const QHash<NodeType_t, QString> TYPE_NAME_HASH {
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash(); { NodeType::DomainServer, "Domain Server" },
{ NodeType::EntityServer, "Entity Server" },
TypeNameHash.insert(NodeType::DomainServer, "Domain Server"); { NodeType::Agent, "Agent" },
TypeNameHash.insert(NodeType::EntityServer, "Entity Server"); { NodeType::AudioMixer, "Audio Mixer" },
TypeNameHash.insert(NodeType::Agent, "Agent"); { NodeType::AvatarMixer, "Avatar Mixer" },
TypeNameHash.insert(NodeType::AudioMixer, "Audio Mixer"); { NodeType::MessagesMixer, "Messages Mixer" },
TypeNameHash.insert(NodeType::AvatarMixer, "Avatar Mixer"); { NodeType::AssetServer, "Asset Server" },
TypeNameHash.insert(NodeType::MessagesMixer, "Messages Mixer"); { NodeType::EntityScriptServer, "Entity Script Server" },
TypeNameHash.insert(NodeType::AssetServer, "Asset Server"); { NodeType::UpstreamAudioMixer, "Upstream Audio Mixer" },
TypeNameHash.insert(NodeType::EntityScriptServer, "Entity Script Server"); { NodeType::UpstreamAvatarMixer, "Upstream Avatar Mixer" },
TypeNameHash.insert(NodeType::UpstreamAudioMixer, "Upstream Audio Mixer"); { NodeType::DownstreamAudioMixer, "Downstream Audio Mixer" },
TypeNameHash.insert(NodeType::UpstreamAvatarMixer, "Upstream Avatar Mixer"); { NodeType::DownstreamAvatarMixer, "Downstream Avatar Mixer" },
TypeNameHash.insert(NodeType::DownstreamAudioMixer, "Downstream Audio Mixer"); { NodeType::Unassigned, "Unassigned" }
TypeNameHash.insert(NodeType::DownstreamAvatarMixer, "Downstream Avatar Mixer"); };
TypeNameHash.insert(NodeType::Unassigned, "Unassigned");
}
const QString& NodeType::getNodeTypeName(NodeType_t nodeType) { const QString& NodeType::getNodeTypeName(NodeType_t nodeType) {
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash(); const auto matchedTypeName = TYPE_NAME_HASH.find(nodeType);
QHash<NodeType_t, QString>::iterator matchedTypeName = TypeNameHash.find(nodeType); return matchedTypeName != TYPE_NAME_HASH.end() ? matchedTypeName.value() : UNKNOWN_NodeType_t_NAME;
return matchedTypeName != TypeNameHash.end() ? matchedTypeName.value() : UNKNOWN_NodeType_t_NAME;
} }
bool NodeType::isUpstream(NodeType_t nodeType) { bool NodeType::isUpstream(NodeType_t nodeType) {
@ -84,8 +81,7 @@ NodeType_t NodeType::downstreamType(NodeType_t primaryType) {
} }
NodeType_t NodeType::fromString(QString type) { NodeType_t NodeType::fromString(QString type) {
QHash<NodeType_t, QString>& TypeNameHash = Node::getTypeNameHash(); return TYPE_NAME_HASH.key(type, NodeType::Unassigned);
return TypeNameHash.key(type, NodeType::Unassigned);
} }

View file

@ -89,11 +89,6 @@ public:
bool isIgnoreRadiusEnabled() const { return _ignoreRadiusEnabled; } bool isIgnoreRadiusEnabled() const { return _ignoreRadiusEnabled; }
static QHash<NodeType_t, QString>& getTypeNameHash() {
static QHash<NodeType_t, QString> TypeNameHash;
return TypeNameHash;
}
private: private:
// privatize copy and assignment operator to disallow Node copying // privatize copy and assignment operator to disallow Node copying
Node(const Node &otherNode); Node(const Node &otherNode);

View file

@ -31,8 +31,6 @@ namespace NodeType {
const NodeType_t DownstreamAvatarMixer = 'w'; const NodeType_t DownstreamAvatarMixer = 'w';
const NodeType_t Unassigned = 1; const NodeType_t Unassigned = 1;
void init();
const QString& getNodeTypeName(NodeType_t nodeType); const QString& getNodeTypeName(NodeType_t nodeType);
bool isUpstream(NodeType_t nodeType); bool isUpstream(NodeType_t nodeType);
bool isDownstream(NodeType_t nodeType); bool isDownstream(NodeType_t nodeType);