26 #include <boost/noncopyable.hpp> 33 #include "../../clib/rawtypes.h" 34 #include "../../clib/spinlock.h" 35 #include "../../clib/wallclock.h" 36 #include "../../clib/weakptr.h" 37 #include "../crypt/cryptkey.h" 38 #include "../pktdef.h" 40 #include "../polclock.h" 41 #include "../sockets.h" 42 #include "../uconst.h" 53 class MessageTypeFilter;
71 class ClientInterface;
138 size_t estimatedSize()
const;
148 void forceDisconnect();
149 bool isActive()
const;
150 bool isReallyConnected()
const;
151 bool isConnected()
const;
154 void closeConnection();
156 bool needslock =
false );
157 void transmitmore(
const void*
data,
int len );
159 void recv_remaining(
int total_expected );
160 void recv_remaining_nocrypt(
int total_expected );
162 void setversion(
const std::string& ver ) { version_ = ver; }
173 bool might_use_v2_handler()
const;
177 memcpy( &clientinfo_, msg,
sizeof( clientinfo_ ) );
189 bool have_queued_data()
const;
190 void send_queued_data();
204 RECV_STATE_CLIENTVERSION_WAIT
224 std::string status()
const;
233 std::string ipaddrAsString()
const;
235 bool SpeedHackPrevention(
bool add =
true );
247 void queue_data(
const void*
data,
unsigned short datalen );
248 void transmit_encrypted(
const void*
data,
int len );
249 void xmit(
const void*
data,
unsigned short datalen );
272 unsigned int bytes_received;
283 return ( first_xmit_buffer !=
nullptr );
290 this->disconnect =
true;
297 return !( this->disconnect );
303 return !( this->preDisconnect || this->disconnect );
308 return this->ready && this->isConnected();
VersionDetailStruct getversiondetail() const
bool have_queued_data() const
const struct VersionDetailStruct CLIENT_VER_60142
const struct VersionDetailStruct CLIENT_VER_70130
const struct VersionDetailStruct CLIENT_VER_5020
const struct VersionDetailStruct CLIENT_VER_7090
const std::string & getversion() const
Core::polclock_t last_packet_at
std::atomic< int > pause_count
const struct VersionDetailStruct CLIENT_VER_4070
void transmit(Client *client, const void *data, int len)
unsigned int bytes_transmitted
unsigned int bytes_received
unsigned char bufcheck2_55
Clib::wallclock_t next_movement
Core::PKTIN_D9 clientinfo_
unsigned int message_length
std::queue< PacketThrottler > movementqueue
ClientInterface & Interface
unsigned char bufcheck1_AA
const struct VersionDetailStruct CLIENT_VER_6017
const struct VersionDetailStruct CLIENT_VER_4000
const struct VersionDetailStruct CLIENT_VER_70331
const struct VersionDetailStruct CLIENT_VER_70300
static unsigned int instance_counter_
Core::XmitBuffer * first_xmit_buffer
bool encrypt_server_stream
VersionDetailStruct versiondetail_
static std::mutex _SocketMutex
std::unordered_map< u64, ScriptDiffData > data
weak_ptr_owner< Client > weakptr
void setversiondetail(VersionDetailStruct &detail)
bool might_use_v2_handler() const
Crypt::CCryptBase * cryptengine
void setversion(const std::string &ver)
unsigned short listen_port
const struct VersionDetailStruct CLIENT_VER_5000
void setclientinfo(const Core::PKTIN_D9 *msg)
const Core::MessageTypeFilter * msgtype_filter
unsigned char last_msgtype
bool isReallyConnected() const
u32 UOExpansionFlagClient
Core::polclock_t last_activity_at
const struct VersionDetailStruct CLIENT_VER_7000
bool compareVersion(int ver1major, int ver1minor, int ver1build, int ver2major, int ver2minor, int ver2build)
Clib::SpinLock _fpLog_lock
Core::XmitBuffer * last_xmit_buffer