19#include <unordered_map>
20#include <unordered_set>
247 float dtime, std::vector<PrioritySortedBlockTransfer> &dest);
273 return insert_result.second;
278 o <<
"RemoteClient " <<
peer_id <<
": "
315 void setVersionInfo(u8 major, u8 minor, u8 patch,
const std::string &full);
439 void step(
float dtime);
486 assert(
m_env == NULL);
508 std::shared_ptr<con::IConnection>
m_con;
Definition clientiface.h:493
RecursiveMutexAutoLock m_lock
Definition clientiface.h:498
AutoLock(ClientInterface &iface)
Definition clientiface.h:495
Definition clientiface.h:430
float m_check_linger_timer
Definition clientiface.h:522
RemoteClientMap & getClientList()
Definition clientiface.h:501
~ClientInterface()
Definition clientiface.cpp:649
std::shared_ptr< con::IConnection > m_con
Definition clientiface.h:508
void CreateClient(session_t peer_id)
Definition clientiface.cpp:848
static const char * state2Name(ClientState state)
Definition clientiface.cpp:52
ClientState getClientState(session_t peer_id)
Definition clientiface.cpp:806
std::vector< std::string > m_clients_names
Definition clientiface.h:516
void send(session_t peer_id, NetworkPacket *pkt)
Definition clientiface.cpp:756
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition clientiface.cpp:784
void event(session_t peer_id, ClientStateEvent event)
Definition clientiface.cpp:863
void markBlocksNotSent(const std::vector< v3s16 > &positions)
Definition clientiface.cpp:677
const std::vector< std::string > & getPlayerNames() const
Definition clientiface.h:451
std::vector< session_t > getClientIDs(ClientState min_state=CS_Active)
Definition clientiface.cpp:664
u16 getProtocolVersion(session_t peer_id)
Definition clientiface.cpp:885
void setEnv(ServerEnvironment *env)
Definition clientiface.h:484
ServerEnvironment * m_env
Definition clientiface.h:519
std::recursive_mutex m_clients_mutex
Definition clientiface.h:513
float m_print_info_timer
Definition clientiface.h:521
RemoteClient * lockedGetClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition clientiface.cpp:791
void DeleteClient(session_t peer_id)
Definition clientiface.cpp:818
bool isUserLimitReached()
Definition clientiface.cpp:686
static constexpr int LINGER_TIMEOUT
Definition clientiface.h:528
void step(float dtime)
Definition clientiface.cpp:692
void UpdatePlayerList()
Definition clientiface.cpp:726
void sendCustom(session_t peer_id, u8 channel, NetworkPacket *pkt, bool reliable)
Definition clientiface.cpp:764
void sendToAll(NetworkPacket *pkt, ClientState state_min=CS_Active)
Definition clientiface.cpp:773
ClientInterface(const std::shared_ptr< con::IConnection > &con)
Definition clientiface.cpp:641
RemoteClientMap m_clients
Definition clientiface.h:515
static const char * statenames[]
Definition clientiface.h:39
Definition networkpacket.h:16
Definition clientiface.h:212
void confirmSerializationVersion()
Definition clientiface.h:308
const Address & getAddress() const
Definition clientiface.h:327
bool isMechAllowed(AuthMechanism mech)
Definition clientiface.h:233
u8 getMinor() const
Definition clientiface.h:319
void setPendingSerializationVersion(u8 version)
Definition clientiface.h:305
const s16 m_block_optimize_distance
Definition clientiface.h:373
u8 m_version_major
Definition clientiface.h:416
void GetNextBlocks(ServerEnvironment *env, EmergeManager *emerge, float dtime, std::vector< PrioritySortedBlockTransfer > &dest)
Definition clientiface.cpp:90
void setDynamicInfo(const ClientDynamicInfo &info)
Definition clientiface.h:329
const s16 m_max_gen_distance
Definition clientiface.h:375
void SetBlockNotSent(v3s16 p)
Definition clientiface.cpp:430
u8 getMajor() const
Definition clientiface.h:318
void PrintInfo(std::ostream &o)
Definition clientiface.h:276
u32 getSendingCount() const
Definition clientiface.h:264
std::string enc_pwd
Definition clientiface.h:225
std::string m_full_version
Definition clientiface.h:420
const s16 m_block_cull_optimize_distance
Definition clientiface.h:374
ClientState m_state
Definition clientiface.h:337
void SetBlocksNotSent(const std::vector< v3s16 > &blocks)
Definition clientiface.cpp:450
ClientDynamicInfo m_dynamic_info
Definition clientiface.h:346
v3s16 m_last_center
Definition clientiface.h:367
const std::string & getName() const
Definition clientiface.h:297
u32 allowed_auth_mechs
Definition clientiface.h:229
const s16 m_max_send_distance
Definition clientiface.h:372
std::unordered_set< v3s16 > m_blocks_occ
Definition clientiface.h:364
void ResendBlockIfOnWire(v3s16 p)
tell client about this block being modified right now.
Definition clientiface.cpp:73
s16 m_nearest_unsent_d
Definition clientiface.h:366
void setName(const std::string &name)
Definition clientiface.h:299
void setCachedAddress(const Address &addr)
Definition clientiface.h:326
std::string m_lang_code
Definition clientiface.h:343
void setVersionInfo(u8 major, u8 minor, u8 patch, const std::string &full)
Definition clientiface.cpp:628
void * auth_data
Definition clientiface.h:228
bool create_player_on_auth_success
Definition clientiface.h:226
std::unordered_set< v3s16 > m_blocks_sending
Definition clientiface.h:391
u8 m_version_minor
Definition clientiface.h:417
u8 m_version_patch
Definition clientiface.h:418
const ClientDynamicInfo & getDynamicInfo() const
Definition clientiface.h:330
float m_map_send_completion_timer
Definition clientiface.h:406
const float m_min_time_from_building
Definition clientiface.h:371
u32 m_excess_gotblocks
Definition clientiface.h:400
bool markMediaSent(const std::string &name)
Definition clientiface.h:271
RemoteClient()
Definition clientiface.cpp:57
const u64 m_connection_time
Definition clientiface.h:425
const std::string & getLangCode() const
Definition clientiface.h:324
u8 m_pending_serialization_version
Definition clientiface.h:334
float m_time_from_building
Definition clientiface.h:288
session_t peer_id
Definition clientiface.h:218
void SentBlock(v3s16 p)
Definition clientiface.cpp:423
u16 net_proto_version
Definition clientiface.h:222
ClientState getState() const
Definition clientiface.h:295
std::unordered_set< v3s16 > m_blocks_sent
Definition clientiface.h:357
void resetChosenMech()
Definition clientiface.cpp:606
void setEncryptedPassword(const std::string &pwd)
Definition clientiface.cpp:615
u8 serialization_version
Definition clientiface.h:220
const std::string & getFullVer() const
Definition clientiface.h:321
bool isBlockSent(v3s16 p) const
Definition clientiface.h:266
std::set< u16 > m_known_objects
Definition clientiface.h:293
Address m_addr
Definition clientiface.h:340
v3f m_last_camera_dir
Definition clientiface.h:368
u8 getPatch() const
Definition clientiface.h:320
void GotBlock(v3s16 p)
Definition clientiface.cpp:412
void setLangCode(const std::string &code)
Definition clientiface.cpp:636
std::string m_name
Definition clientiface.h:411
void notifyEvent(ClientStateEvent event)
Definition clientiface.cpp:457
const u16 m_max_simul_sends
Definition clientiface.h:370
u64 uptime() const
Definition clientiface.cpp:623
std::unordered_set< std::string > m_media_sent
Definition clientiface.h:382
const bool m_occ_cull
Definition clientiface.h:376
AuthMechanism chosen_mech
Definition clientiface.h:227
float m_nothing_to_send_pause_timer
Definition clientiface.h:403
Definition serverenvironment.h:113
ClientState
Definition clientiface.h:163
@ CS_HelloSent
Definition clientiface.h:168
@ CS_Disconnecting
Definition clientiface.h:165
@ CS_Denied
Definition clientiface.h:166
@ CS_Active
Definition clientiface.h:172
@ CS_DefinitionsSent
Definition clientiface.h:171
@ CS_AwaitingInit2
Definition clientiface.h:169
@ CS_Created
Definition clientiface.h:167
@ CS_SudoMode
Definition clientiface.h:173
@ CS_InitDone
Definition clientiface.h:170
@ CS_Invalid
Definition clientiface.h:164
ClientStateEvent
Definition clientiface.h:177
@ CSE_SetClientReady
Definition clientiface.h:183
@ CSE_AuthAccept
Definition clientiface.h:179
@ CSE_SetDefinitionsSent
Definition clientiface.h:182
@ CSE_Hello
Definition clientiface.h:178
@ CSE_GotInit2
Definition clientiface.h:180
@ CSE_SudoLeave
Definition clientiface.h:185
@ CSE_SudoSuccess
Definition clientiface.h:184
@ CSE_Disconnect
Definition clientiface.h:186
@ CSE_SetDenied
Definition clientiface.h:181
std::unordered_map< u16, RemoteClient * > RemoteClientMap
Definition clientiface.h:428
#define PEER_ID_INEXISTENT
Definition constants.h:19
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
core::vector3df v3f
Definition irr_v3d.h:11
std::lock_guard< std::recursive_mutex > RecursiveMutexAutoLock
Definition mutex_auto_lock.h:33
AuthMechanism
Definition networkprotocol.h:915
@ AUTH_MECHANISM_NONE
Definition networkprotocol.h:917
u16 session_t
Definition networkprotocol.h:27
Definition clientdynamicinfo.h:12
Definition clientiface.h:195
bool operator<(const PrioritySortedBlockTransfer &other) const
Definition clientiface.h:202
float priority
Definition clientiface.h:206
PrioritySortedBlockTransfer(float a_priority, const v3s16 &a_pos, session_t a_peer_id)
Definition clientiface.h:196
v3s16 pos
Definition clientiface.h:207
session_t peer_id
Definition clientiface.h:208
static std::string p(std::string path)
Definition test_filesys.cpp:64