mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-17 03:20:06 +00:00
dongresource
100b4605ec
Revisiting this again; the issue was that the comparison operator was facing the wrong way, so connections were being pruned every 30 seconds or less. This was effectively a race condition kicking an unlucky player every so often when pruning happened exactly during an attempt to enter the game. Now that the proper timeout is being enforced, I've reduced it to 5 minutes, down from 15, since it really doesn't need to be that long.
30 lines
677 B
C++
30 lines
677 B
C++
/*
|
|
* core/CNShared.hpp
|
|
* There's some data shared between the Login Server and the Shard Server. Of course all of this needs to be thread-safe. No mucking about on this one!
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
#include "Player.hpp"
|
|
|
|
/*
|
|
* Connecions time out after 5 minutes, checked every 30 seconds.
|
|
*/
|
|
#define CNSHARED_TIMEOUT 300000
|
|
#define CNSHARED_PERIOD 30000
|
|
|
|
struct LoginMetadata {
|
|
uint64_t FEKey;
|
|
int32_t playerId;
|
|
time_t timestamp;
|
|
};
|
|
|
|
namespace CNShared {
|
|
void storeLoginMetadata(int64_t sk, LoginMetadata *lm);
|
|
LoginMetadata* getLoginMetadata(int64_t sk);
|
|
void pruneLoginMetadata(CNServer *serv, time_t currTime);
|
|
}
|