36#include <unordered_set>
263 float dtime, std::vector<PrioritySortedBlockTransfer> &dest);
289 return insert_result.second;
294 o<<
"RemoteClient "<<
peer_id<<
": "
334 void setVersionInfo(u8 major, u8 minor, u8 patch,
const std::string &full);
471 void step(
float dtime);
517 const std::string &full);
525 assert(
m_env == NULL);
546 std::shared_ptr<con::Connection>
m_con;
Definition: clientiface.h:531
RecursiveMutexAutoLock m_lock
Definition: clientiface.h:536
AutoLock(ClientInterface &iface)
Definition: clientiface.h:533
Definition: clientiface.h:462
float m_check_linger_timer
Definition: clientiface.h:556
RemoteClientMap & getClientList()
Definition: clientiface.h:539
~ClientInterface()
Definition: clientiface.cpp:668
void CreateClient(session_t peer_id)
Definition: clientiface.cpp:893
ClientState getClientState(session_t peer_id)
Definition: clientiface.cpp:841
std::vector< std::string > m_clients_names
Definition: clientiface.h:550
void send(session_t peer_id, NetworkPacket *pkt)
Definition: clientiface.cpp:781
static std::string state2Name(ClientState state)
Definition: clientiface.cpp:63
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition: clientiface.cpp:812
void sendToAll(NetworkPacket *pkt)
Definition: clientiface.cpp:798
void event(session_t peer_id, ClientStateEvent event)
Definition: clientiface.cpp:908
void markBlocksNotSent(const std::vector< v3s16 > &positions)
Definition: clientiface.cpp:696
const std::vector< std::string > & getPlayerNames() const
Definition: clientiface.h:483
std::vector< session_t > getClientIDs(ClientState min_state=CS_Active)
Definition: clientiface.cpp:683
u16 getProtocolVersion(session_t peer_id)
Definition: clientiface.cpp:930
void setEnv(ServerEnvironment *env)
Definition: clientiface.h:523
ServerEnvironment * m_env
Definition: clientiface.h:553
std::recursive_mutex m_clients_mutex
Definition: clientiface.h:547
float m_print_info_timer
Definition: clientiface.h:555
RemoteClient * lockedGetClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition: clientiface.cpp:827
void setClientVersion(session_t peer_id, u8 major, u8 minor, u8 patch, const std::string &full)
Definition: clientiface.cpp:944
std::shared_ptr< con::Connection > m_con
Definition: clientiface.h:546
void DeleteClient(session_t peer_id)
Definition: clientiface.cpp:863
bool isUserLimitReached()
Verify if user limit was reached.
Definition: clientiface.cpp:710
static constexpr int LINGER_TIMEOUT
Definition: clientiface.h:560
void setPlayerName(session_t peer_id, const std::string &name)
Definition: clientiface.cpp:853
void step(float dtime)
Definition: clientiface.cpp:715
void UpdatePlayerList()
Definition: clientiface.cpp:752
void sendCustom(session_t peer_id, u8 channel, NetworkPacket *pkt, bool reliable)
Definition: clientiface.cpp:789
RemoteClientMap m_clients
Definition: clientiface.h:549
static const char * statenames[]
Definition: clientiface.h:558
Definition: mapblock.h:73
Definition: networkpacket.h:27
Definition: clientiface.h:228
void confirmSerializationVersion()
Definition: clientiface.h:327
const Address & getAddress() const
Definition: clientiface.h:346
bool isMechAllowed(AuthMechanism mech)
Definition: clientiface.h:249
u8 getMinor() const
Definition: clientiface.h:338
void setPendingSerializationVersion(u8 version)
Definition: clientiface.h:321
const s16 m_block_optimize_distance
Definition: clientiface.h:392
u8 m_version_major
Definition: clientiface.h:446
void GetNextBlocks(ServerEnvironment *env, EmergeManager *emerge, float dtime, std::vector< PrioritySortedBlockTransfer > &dest)
Definition: clientiface.cpp:107
void setDynamicInfo(const ClientDynamicInfo &info)
Definition: clientiface.h:348
const s16 m_max_gen_distance
Definition: clientiface.h:394
void SetBlockNotSent(v3s16 p)
Definition: clientiface.cpp:460
u8 getMajor() const
Definition: clientiface.h:337
void PrintInfo(std::ostream &o)
Definition: clientiface.h:292
u32 getSendingCount() const
Definition: clientiface.h:280
std::string enc_pwd
Definition: clientiface.h:241
std::string m_full_version
Definition: clientiface.h:450
const s16 m_block_cull_optimize_distance
Definition: clientiface.h:393
ClientState m_state
Definition: clientiface.h:356
void SetBlocksNotSent(const std::vector< v3s16 > &blocks)
Definition: clientiface.cpp:470
ClientDynamicInfo m_dynamic_info
Definition: clientiface.h:365
v3s16 m_last_center
Definition: clientiface.h:386
const std::string & getName() const
Definition: clientiface.h:313
u32 allowed_auth_mechs
Definition: clientiface.h:245
const s16 m_max_send_distance
Definition: clientiface.h:391
std::unordered_set< v3s16 > m_blocks_occ
Definition: clientiface.h:383
void ResendBlockIfOnWire(v3s16 p)
tell client about this block being modified right now.
Definition: clientiface.cpp:80
s16 m_nearest_unsent_d
Definition: clientiface.h:385
void setName(const std::string &name)
Definition: clientiface.h:315
void setCachedAddress(const Address &addr)
Definition: clientiface.h:345
void setDeployedCompressionMode(u16 byteFlag)
Definition: clientiface.h:324
std::string m_lang_code
Definition: clientiface.h:362
void setVersionInfo(u8 major, u8 minor, u8 patch, const std::string &full)
Definition: clientiface.cpp:648
void * auth_data
Definition: clientiface.h:244
bool create_player_on_auth_success
Definition: clientiface.h:242
u8 m_version_minor
Definition: clientiface.h:447
u8 m_version_patch
Definition: clientiface.h:448
const ClientDynamicInfo & getDynamicInfo() const
Definition: clientiface.h:349
float m_map_send_completion_timer
Definition: clientiface.h:436
const float m_min_time_from_building
Definition: clientiface.h:390
u32 m_excess_gotblocks
Definition: clientiface.h:430
bool markMediaSent(const std::string &name)
Definition: clientiface.h:287
RemoteClient()
Definition: clientiface.cpp:68
const u64 m_connection_time
Definition: clientiface.h:457
const std::string & getLangCode() const
Definition: clientiface.h:343
u8 m_pending_serialization_version
Definition: clientiface.h:353
float m_time_from_building
Definition: clientiface.h:304
session_t peer_id
Definition: clientiface.h:234
void SentBlock(v3s16 p)
Definition: clientiface.cpp:451
u16 net_proto_version
Definition: clientiface.h:238
std::unordered_set< v3s16 > m_blocks_modified
Definition: clientiface.h:421
ClientState getState() const
Definition: clientiface.h:311
std::unordered_set< v3s16 > m_blocks_sent
Definition: clientiface.h:376
void resetChosenMech()
Definition: clientiface.cpp:631
void setEncryptedPassword(const std::string &pwd)
Definition: clientiface.cpp:640
u8 serialization_version
Definition: clientiface.h:236
const std::string & getFullVer() const
Definition: clientiface.h:340
bool isBlockSent(v3s16 p) const
Definition: clientiface.h:282
std::set< u16 > m_known_objects
Definition: clientiface.h:309
Address m_addr
Definition: clientiface.h:359
v3f m_last_camera_dir
Definition: clientiface.h:387
u8 getPatch() const
Definition: clientiface.h:339
void GotBlock(v3s16 p)
Definition: clientiface.cpp:439
u16 m_deployed_compression
Definition: clientiface.h:452
void setLangCode(const std::string &code)
Definition: clientiface.cpp:656
std::string m_name
Definition: clientiface.h:441
void notifyEvent(ClientStateEvent event)
Definition: clientiface.cpp:482
const u16 m_max_simul_sends
Definition: clientiface.h:389
u64 uptime() const
Definition: clientiface.h:331
std::unordered_map< v3s16, float > m_blocks_sending
Definition: clientiface.h:411
std::unordered_set< std::string > m_media_sent
Definition: clientiface.h:401
const bool m_occ_cull
Definition: clientiface.h:395
AuthMechanism chosen_mech
Definition: clientiface.h:243
float m_nothing_to_send_pause_timer
Definition: clientiface.h:433
Definition: serverenvironment.h:220
ClientState
Definition: clientiface.h:179
@ CS_HelloSent
Definition: clientiface.h:184
@ CS_Disconnecting
Definition: clientiface.h:181
@ CS_Denied
Definition: clientiface.h:182
@ CS_Active
Definition: clientiface.h:188
@ CS_DefinitionsSent
Definition: clientiface.h:187
@ CS_AwaitingInit2
Definition: clientiface.h:185
@ CS_Created
Definition: clientiface.h:183
@ CS_SudoMode
Definition: clientiface.h:189
@ CS_InitDone
Definition: clientiface.h:186
@ CS_Invalid
Definition: clientiface.h:180
ClientStateEvent
Definition: clientiface.h:193
@ CSE_SetClientReady
Definition: clientiface.h:199
@ CSE_AuthAccept
Definition: clientiface.h:195
@ CSE_SetDefinitionsSent
Definition: clientiface.h:198
@ CSE_Hello
Definition: clientiface.h:194
@ CSE_GotInit2
Definition: clientiface.h:196
@ CSE_SudoLeave
Definition: clientiface.h:201
@ CSE_SudoSuccess
Definition: clientiface.h:200
@ CSE_Disconnect
Definition: clientiface.h:202
@ CSE_SetDenied
Definition: clientiface.h:197
std::unordered_map< u16, RemoteClient * > RemoteClientMap
Definition: clientiface.h:460
#define PEER_ID_INEXISTENT
Definition: constants.h:34
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
core::vector3df v3f
Definition: irr_v3d.h:26
std::unique_lock< std::recursive_mutex > RecursiveMutexAutoLock
Definition: mutex_auto_lock.h:30
u64 getTimeS()
Definition: porting.h:183
AuthMechanism
Definition: networkprotocol.h:1066
@ AUTH_MECHANISM_NONE
Definition: networkprotocol.h:1068
u16 session_t
Definition: networkprotocol.h:251
#define SER_FMT_VER_INVALID
Definition: serialization.h:69
Definition: clientdynamicinfo.h:26
Definition: clientiface.h:211
bool operator<(const PrioritySortedBlockTransfer &other) const
Definition: clientiface.h:218
float priority
Definition: clientiface.h:222
PrioritySortedBlockTransfer(float a_priority, const v3s16 &a_pos, session_t a_peer_id)
Definition: clientiface.h:212
v3s16 pos
Definition: clientiface.h:223
session_t peer_id
Definition: clientiface.h:224
static std::string p(std::string path)
Definition: test_filesys.cpp:64