Change node query limit
This commit is contained in:
parent
1438f46d94
commit
a97fbd4c8a
@ -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);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user