#include "constants.h"
#include "serialization.h" // for SER_FMT_VER_INVALID
-#include "jthread/jmutex.h"
+#include "threading/mutex.h"
#include "network/networkpacket.h"
#include <list>
\-----------------/
| depending of the incoming packet
+---------------------------------------
- v |
+ v v
+-----------------------------+ +-----------------------------+
|IN: | |IN: |
| TOSERVER_INIT_LEGACY |----- | TOSERVER_INIT | invalid playername,
+-----------------------------+ | +-----------------------------+ password (for _LEGACY),
| | | or denied by mod
| Auth ok -------------------+---------------------------------
- | | |
+ v v |
+-----------------------------+ +-----------------------------+ |
|OUT: | |OUT: | |
| TOCLIENT_INIT_LEGACY | | TOCLIENT_HELLO | |
| +-----------------------------+ |
| ^ | |
| ----------------------------- |
- | |
+ v |
+-----------------------------+ --------------------------------+
|IN: | | |
| TOSERVER_CLIENT_READY | v |
| |---------------------------------------------------------------
---->| Active |
| | |----------------------------------------------
- | \-----------------/ timeout |
+ | \-----------------/ timeout v
| | | +-----------------------------+
| | | |OUT: |
| | | | TOCLIENT_DISCONNECT |
| | | +-----------------------------+
| | | |
- | | | v
+ | | v v
| | +-----------------------------+ /-----------------\
| | |IN: | | |
| | | TOSERVER_DISCONNECT |------------------->| Disconnecting |
| | +-----------------------------+
| | sets password accordingly |IN: |
-------------------+-------------------------------| TOSERVER_FIRST_SRP |
- +-----------------------------+
+ +-----------------------------+
*/
namespace con {
#define CI_ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0]))
+// Also make sure to update the ClientInterface::statenames
+// array when modifying these enums
+
enum ClientState
{
CS_Invalid,
/* Authentication information */
std::string enc_pwd;
+ bool create_player_on_auth_success;
AuthMechanism chosen_mech;
void * auth_data;
u32 allowed_auth_mechs;
peer_id(PEER_ID_INEXISTENT),
serialization_version(SER_FMT_VER_INVALID),
net_proto_version(0),
+ create_player_on_auth_success(false),
chosen_mech(AUTH_MECHANISM_NONE),
auth_data(NULL),
m_time_from_building(9999),
m_version_minor(0),
m_version_patch(0),
m_full_version("unknown"),
- m_supported_compressions(0),
+ m_deployed_compression(0),
m_connection_time(getTime(PRECISION_SECONDS))
{
}
void setPendingSerializationVersion(u8 version)
{ m_pending_serialization_version = version; }
- void setSupportedCompressionModes(u8 byteFlag)
- { m_supported_compressions = byteFlag; }
+ void setDeployedCompressionMode(u16 byteFlag)
+ { m_deployed_compression = byteFlag; }
void confirmSerializationVersion()
{ serialization_version = m_pending_serialization_version; }
std::string m_full_version;
- u8 m_supported_compressions;
+ u16 m_deployed_compression;
/*
time this client was created
protected:
//TODO find way to avoid this functions
- void Lock()
- { m_clients_mutex.Lock(); }
- void Unlock()
- { m_clients_mutex.Unlock(); }
+ void lock() { m_clients_mutex.lock(); }
+ void unlock() { m_clients_mutex.unlock(); }
std::map<u16, RemoteClient*>& getClientList()
{ return m_clients; }
// Connection
con::Connection* m_con;
- JMutex m_clients_mutex;
+ Mutex m_clients_mutex;
// Connected clients (behind the con mutex)
std::map<u16, RemoteClient*> m_clients;
std::vector<std::string> m_clients_names; //for announcing masterserver
// Environment
ServerEnvironment *m_env;
- JMutex m_env_mutex;
+ Mutex m_env_mutex;
float m_print_info_timer;