19#include <unordered_map>
20#include <unordered_set>
248 float dtime, std::vector<PrioritySortedBlockTransfer> &dest);
255 void SetBlocksNotSent(
const std::vector<v3s16> &blocks,
bool low_priority =
false);
279 return insert_result.second;
284 o <<
"RemoteClient " <<
peer_id <<
": "
321 void setVersionInfo(u8 major, u8 minor, u8 patch,
const std::string &full);
445 void step(
float dtime);
451 void markBlocksNotSent(
const std::vector<v3s16> &positions,
bool low_priority =
false);
492 assert(
m_env == NULL);
514 std::shared_ptr<con::IConnection>
m_con;
RecursiveMutexAutoLock m_lock
Definition clientiface.h:504
AutoLock(ClientInterface &iface)
Definition clientiface.h:501
float m_check_linger_timer
Definition clientiface.h:528
RemoteClientMap & getClientList()
Definition clientiface.h:507
~ClientInterface()
Definition clientiface.cpp:678
std::shared_ptr< con::IConnection > m_con
Definition clientiface.h:514
void CreateClient(session_t peer_id)
Definition clientiface.cpp:877
static const char * state2Name(ClientState state)
Definition clientiface.cpp:53
ClientState getClientState(session_t peer_id)
Definition clientiface.cpp:835
std::vector< std::string > m_clients_names
Definition clientiface.h:522
void send(session_t peer_id, NetworkPacket *pkt)
Definition clientiface.cpp:785
RemoteClient * getClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition clientiface.cpp:813
void event(session_t peer_id, ClientStateEvent event)
Definition clientiface.cpp:892
const std::vector< std::string > & getPlayerNames() const
Definition clientiface.h:457
std::vector< session_t > getClientIDs(ClientState min_state=CS_Active)
Definition clientiface.cpp:693
u16 getProtocolVersion(session_t peer_id)
Definition clientiface.cpp:914
void setEnv(ServerEnvironment *env)
Definition clientiface.h:490
ServerEnvironment * m_env
Definition clientiface.h:525
std::recursive_mutex m_clients_mutex
Definition clientiface.h:519
float m_print_info_timer
Definition clientiface.h:527
RemoteClient * lockedGetClientNoEx(session_t peer_id, ClientState state_min=CS_Active)
Definition clientiface.cpp:820
void DeleteClient(session_t peer_id)
Definition clientiface.cpp:847
bool isUserLimitReached()
Definition clientiface.cpp:715
static constexpr int LINGER_TIMEOUT
Definition clientiface.h:534
friend class Server
Definition clientiface.h:439
void step(float dtime)
Definition clientiface.cpp:721
void UpdatePlayerList()
Definition clientiface.cpp:755
void sendCustom(session_t peer_id, u8 channel, NetworkPacket *pkt, bool reliable)
Definition clientiface.cpp:793
void markBlocksNotSent(const std::vector< v3s16 > &positions, bool low_priority=false)
Definition clientiface.cpp:706
void sendToAll(NetworkPacket *pkt, ClientState state_min=CS_Active)
Definition clientiface.cpp:802
ClientInterface(const std::shared_ptr< con::IConnection > &con)
Definition clientiface.cpp:670
RemoteClientMap m_clients
Definition clientiface.h:521
static const char * statenames[]
Definition clientiface.h:40
Definition networkpacket.h:16
Definition clientiface.h:213
void confirmSerializationVersion()
Definition clientiface.h:314
const Address & getAddress() const
Definition clientiface.h:333
bool isMechAllowed(AuthMechanism mech)
Definition clientiface.h:234
u8 getMinor() const
Definition clientiface.h:325
void setPendingSerializationVersion(u8 version)
Definition clientiface.h:311
const s16 m_block_optimize_distance
Definition clientiface.h:379
u8 m_version_major
Definition clientiface.h:422
void GetNextBlocks(ServerEnvironment *env, EmergeManager *emerge, float dtime, std::vector< PrioritySortedBlockTransfer > &dest)
Definition clientiface.cpp:83
void setDynamicInfo(const ClientDynamicInfo &info)
Definition clientiface.h:335
const s16 m_max_gen_distance
Definition clientiface.h:381
u8 getMajor() const
Definition clientiface.h:324
void PrintInfo(std::ostream &o)
Definition clientiface.h:282
u32 getSendingCount() const
Definition clientiface.h:270
std::string enc_pwd
Definition clientiface.h:226
std::string m_full_version
Definition clientiface.h:426
const s16 m_block_cull_optimize_distance
Definition clientiface.h:380
ClientState m_state
Definition clientiface.h:343
void SetBlockNotSent(v3s16 p, bool low_priority=false)
Definition clientiface.cpp:426
ClientDynamicInfo m_dynamic_info
Definition clientiface.h:352
v3s16 m_last_center
Definition clientiface.h:373
const std::string & getName() const
Definition clientiface.h:303
u32 allowed_auth_mechs
Definition clientiface.h:230
const s16 m_max_send_distance
Definition clientiface.h:378
std::unordered_set< v3s16 > m_blocks_occ
Definition clientiface.h:370
s16 m_nearest_unsent_d
Definition clientiface.h:372
void setName(const std::string &name)
Definition clientiface.h:305
void setCachedAddress(const Address &addr)
Definition clientiface.h:332
std::string m_lang_code
Definition clientiface.h:349
void setVersionInfo(u8 major, u8 minor, u8 patch, const std::string &full)
Definition clientiface.cpp:657
void * auth_data
Definition clientiface.h:229
bool create_player_on_auth_success
Definition clientiface.h:227
std::unordered_set< v3s16 > m_blocks_sending
Definition clientiface.h:397
u8 m_version_minor
Definition clientiface.h:423
u8 m_version_patch
Definition clientiface.h:424
const ClientDynamicInfo & getDynamicInfo() const
Definition clientiface.h:336
float m_map_send_completion_timer
Definition clientiface.h:412
const float m_min_time_from_building
Definition clientiface.h:377
u32 m_excess_gotblocks
Definition clientiface.h:406
bool markMediaSent(const std::string &name)
Definition clientiface.h:277
RemoteClient()
Definition clientiface.cpp:58
const u64 m_connection_time
Definition clientiface.h:431
const std::string & getLangCode() const
Definition clientiface.h:330
u8 m_pending_serialization_version
Definition clientiface.h:340
float m_time_from_building
Definition clientiface.h:294
session_t peer_id
Definition clientiface.h:219
void SentBlock(v3s16 p)
Definition clientiface.cpp:419
u16 net_proto_version
Definition clientiface.h:223
ClientState getState() const
Definition clientiface.h:301
std::unordered_set< v3s16 > m_blocks_sent
Definition clientiface.h:363
void resetChosenMech()
Definition clientiface.cpp:635
void setEncryptedPassword(const std::string &pwd)
Definition clientiface.cpp:644
void fixupNodePrediction(InteractAction action, const PointedThing &pointed, bool prediction_success)
Trigger block sending to undo client-side predicted node changes.
Definition clientiface.cpp:458
u8 serialization_version
Definition clientiface.h:221
const std::string & getFullVer() const
Definition clientiface.h:327
bool isBlockSent(v3s16 p) const
Definition clientiface.h:272
std::set< u16 > m_known_objects
Definition clientiface.h:299
Address m_addr
Definition clientiface.h:346
v3f m_last_camera_dir
Definition clientiface.h:374
u8 getPatch() const
Definition clientiface.h:326
void GotBlock(v3s16 p)
Definition clientiface.cpp:408
void setLangCode(const std::string &code)
Definition clientiface.cpp:665
std::string m_name
Definition clientiface.h:417
void notifyEvent(ClientStateEvent event)
Definition clientiface.cpp:486
const u16 m_max_simul_sends
Definition clientiface.h:376
void SetBlocksNotSent(const std::vector< v3s16 > &blocks, bool low_priority=false)
Definition clientiface.cpp:451
u64 uptime() const
Definition clientiface.cpp:652
std::unordered_set< std::string > m_media_sent
Definition clientiface.h:388
const bool m_occ_cull
Definition clientiface.h:382
AuthMechanism chosen_mech
Definition clientiface.h:228
float m_nothing_to_send_pause_timer
Definition clientiface.h:409
Definition serverenvironment.h:113
ClientState
Definition clientiface.h:164
@ CS_HelloSent
Definition clientiface.h:169
@ CS_Disconnecting
Definition clientiface.h:166
@ CS_Denied
Definition clientiface.h:167
@ CS_Active
Definition clientiface.h:173
@ CS_DefinitionsSent
Definition clientiface.h:172
@ CS_AwaitingInit2
Definition clientiface.h:170
@ CS_Created
Definition clientiface.h:168
@ CS_SudoMode
Definition clientiface.h:174
@ CS_InitDone
Definition clientiface.h:171
@ CS_Invalid
Definition clientiface.h:165
ClientStateEvent
Definition clientiface.h:178
@ CSE_SetClientReady
Definition clientiface.h:184
@ CSE_AuthAccept
Definition clientiface.h:180
@ CSE_SetDefinitionsSent
Definition clientiface.h:183
@ CSE_Hello
Definition clientiface.h:179
@ CSE_GotInit2
Definition clientiface.h:181
@ CSE_SudoLeave
Definition clientiface.h:186
@ CSE_SudoSuccess
Definition clientiface.h:185
@ CSE_Disconnect
Definition clientiface.h:187
@ CSE_SetDenied
Definition clientiface.h:182
std::unordered_map< u16, RemoteClient * > RemoteClientMap
Definition clientiface.h:434
#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
InteractAction
Definition networkprotocol.h:981
AuthMechanism
Definition networkprotocol.h:927
@ AUTH_MECHANISM_NONE
Definition networkprotocol.h:929
u16 session_t
Definition networkprotocol.h:27
Definition clientdynamicinfo.h:12
An active object or node which is selected by a ray on the map.
Definition pointedthing.h:22
bool operator<(const PrioritySortedBlockTransfer &other) const
Definition clientiface.h:203
float priority
Definition clientiface.h:207
PrioritySortedBlockTransfer(float a_priority, const v3s16 &a_pos, session_t a_peer_id)
Definition clientiface.h:197
v3s16 pos
Definition clientiface.h:208
session_t peer_id
Definition clientiface.h:209
static std::string p(std::string path)
Definition test_filesys.cpp:73