Change node query limit

This commit is contained in:
momo5502 2016-08-06 00:36:28 +02:00
parent 1438f46d94
commit a97fbd4c8a

View File

@ -1,87 +1,87 @@
#define NODE_QUERY_INTERVAL 1000 * 60 * 2 // Query nodelist from nodes evry 2 minutes #define NODE_QUERY_INTERVAL 1000 * 60 * 2 // Query nodelist from nodes evry 2 minutes
#define NODE_QUERY_TIMEOUT 1000 * 30 * 1 // Invalidate nodes after 30 seconds without query response #define NODE_QUERY_TIMEOUT 1000 * 30 * 1 // Invalidate nodes after 30 seconds without query response
#define NODE_INVALID_DELETE 1000 * 60 * 10 // Delete invalidated nodes after 10 minutes #define NODE_INVALID_DELETE 1000 * 60 * 10 // Delete invalidated nodes after 10 minutes
#define NODE_FRAME_QUERY_LIMIT 3 // Limit of nodes to be queried per frame #define NODE_FRAME_QUERY_LIMIT 10 // Limit of nodes to be queried per frame
#define NODE_FRAME_LOCK 60 // Limit of max frames per second #define NODE_FRAME_LOCK 60 // Limit of max frames per second
#define NODE_PACKET_LIMIT 111 // Send 111 nodes per synchronization packet #define NODE_PACKET_LIMIT 111 // Send 111 nodes per synchronization packet
#define NODE_STORE_INTERVAL 1000 * 60* 1 // Store nodes every minute #define NODE_STORE_INTERVAL 1000 * 60* 1 // Store nodes every minute
#define SESSION_TIMEOUT 1000 * 10 // 10 seconds session timeout #define SESSION_TIMEOUT 1000 * 10 // 10 seconds session timeout
#define NODE_VERSION 1 #define NODE_VERSION 1
namespace Components namespace Components
{ {
class Node : public Component class Node : public Component
{ {
public: public:
Node(); Node();
~Node(); ~Node();
const char* GetName() { return "Node"; }; const char* GetName() { return "Node"; };
bool UnitTest(); bool UnitTest();
static void SyncNodeList(); static void SyncNodeList();
static void AddNode(Network::Address address); static void AddNode(Network::Address address);
static unsigned int GetValidNodeCount(); static unsigned int GetValidNodeCount();
private: private:
enum EntryState enum EntryState
{ {
STATE_UNKNOWN, STATE_UNKNOWN,
STATE_NEGOTIATING, STATE_NEGOTIATING,
STATE_VALID, STATE_VALID,
STATE_INVALID, STATE_INVALID,
}; };
class NodeEntry class NodeEntry
{ {
public: public:
Network::Address address; Network::Address address;
std::string challenge; std::string challenge;
Utils::Cryptography::ECC::Key publicKey; Utils::Cryptography::ECC::Key publicKey;
EntryState state; EntryState state;
bool registered; // Do we consider this node as registered? bool registered; // Do we consider this node as registered?
int lastTime; // Last time we heard anything from the server itself int lastTime; // Last time we heard anything from the server itself
int lastHeard; // Last time we heard something of the server at all (refs form other nodes) int lastHeard; // Last time we heard something of the server at all (refs form other nodes)
int lastListQuery; // Last time we got the list of the node int lastListQuery; // Last time we got the list of the node
// This is only relevant for clients // This is only relevant for clients
bool isDedi; bool isDedi;
uint32_t protocol; uint32_t protocol;
uint32_t version; uint32_t version;
}; };
class ClientSession class ClientSession
{ {
public: public:
Network::Address address; Network::Address address;
std::string challenge; std::string challenge;
bool valid; bool valid;
//bool terminated; // Sessions can't explicitly be terminated, they can only timeout //bool terminated; // Sessions can't explicitly be terminated, they can only timeout
int lastTime; int lastTime;
}; };
static Utils::Cryptography::ECC::Key SignatureKey; static Utils::Cryptography::ECC::Key SignatureKey;
static std::vector<NodeEntry> Nodes; static std::vector<NodeEntry> Nodes;
static std::vector<ClientSession> Sessions; static std::vector<ClientSession> Sessions;
static void LoadNodes(); static void LoadNodes();
static void LoadNodePreset(); static void LoadNodePreset();
static void StoreNodes(bool force); static void StoreNodes(bool force);
static void PerformRegistration(Network::Address address); static void PerformRegistration(Network::Address address);
static void SendNodeList(Network::Address address); static void SendNodeList(Network::Address address);
static NodeEntry* FindNode(Network::Address address); static NodeEntry* FindNode(Network::Address address);
static ClientSession* FindSession(Network::Address address); static ClientSession* FindSession(Network::Address address);
static void DeleteInvalidNodes(); static void DeleteInvalidNodes();
static void DeleteInvalidSessions(); static void DeleteInvalidSessions();
static void FrameHandler(); static void FrameHandler();
static const char* GetStateName(EntryState state); static const char* GetStateName(EntryState state);
}; };
} }