Add an optional explicit Id.

This commit is contained in:
Jonathan Naylor 2020-04-29 22:13:38 +01:00
parent b058539a71
commit 60e70fa554
7 changed files with 36 additions and 21 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009-2014,2016 by Jonathan Naylor G4KLX
* Copyright (C) 2009-2014,2016,2020 by Jonathan Naylor G4KLX
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -24,8 +24,9 @@
#include <cassert>
#include <cstring>
CNetwork::CNetwork(unsigned int port, const std::string& name, const std::string& description, bool debug) :
CNetwork::CNetwork(unsigned int port, unsigned int id, const std::string& name, const std::string& description, bool debug) :
m_socket(port),
m_id(id),
m_name(name),
m_description(description),
m_callsign(),
@ -112,19 +113,21 @@ void CNetwork::setCount(unsigned int count)
if (count > 999U)
count = 999U;
unsigned int hash = 0U;
unsigned int hash = m_id;
for (unsigned int i = 0U; i < m_name.size(); i++) {
hash += m_name.at(i);
hash += (hash << 10);
hash ^= (hash >> 6);
if (hash == 0U) {
for (unsigned int i = 0U; i < m_name.size(); i++) {
hash += m_name.at(i);
hash += (hash << 10);
hash ^= (hash >> 6);
}
// Final avalanche
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
}
// Final avalanche
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
::sprintf((char*)m_status, "YSFS%05u%16.16s%14.14s%03u", hash % 100000U, m_name.c_str(), m_description.c_str(), count);
}