mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-18 07:11:29 +00:00
Added cmake options to alter eqstream settings if one would so wish.
This commit is contained in:
parent
275f9d6aaf
commit
e09adbd13d
@ -118,6 +118,14 @@ SET(EQEMU_DEBUG_LEVEL 5 CACHE STRING "EQEmu debug level:
|
|||||||
10 - More errors than you ever wanted to see"
|
10 - More errors than you ever wanted to see"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SET(EQEMU_STREAM_SEND_RATE 1048576 CACHE STRING "Advanced: Base amount of data stream can send before throttle.")
|
||||||
|
SET(EQEMU_STREAM_DECAY_RATE 78642 CACHE STRING "Advanced: Base amount of data stream recovers per tic.")
|
||||||
|
SET(EQEMU_STREAM_RETRANSMIT_TIMEOUT_MUL 3.0 CACHE STRING "Advanced: Multiplier on retransmit timeout.")
|
||||||
|
SET(EQEMU_STREAM_RETRANSMIT_TIMEOUT_MAX 5000 CACHE STRING "Advanced: Max in ms for retransmit timeout timer.")
|
||||||
|
SET(EQEMU_STREAM_AVERAGE_DELTA_MAX 2500 CACHE STRING "Advanced: The maximum average delta in ms allowed.")
|
||||||
|
SET(EQEMU_STREAM_RETRANSMIT_ACKED_PACKETS TRUE CACHE BOOL "Advanced: Whether or not acked packets can be retransmitted")
|
||||||
|
MARK_AS_ADVANCED(EQEMU_STREAM_SEND_RATE EQEMU_STREAM_DECAY_RATE EQEMU_STREAM_RETRANSMIT_TIMEOUT_MUL EQEMU_STREAM_RETRANSMIT_TIMEOUT_MAX EQEMU_STREAM_AVERAGE_DELTA_MAX EQEMU_STREAM_RETRANSMIT_ACKED_PACKETS)
|
||||||
|
|
||||||
#NPC Types Cache Behavior
|
#NPC Types Cache Behavior
|
||||||
OPTION(EQEMU_DEPOP_INVALIDATES_CACHE "#repop invalidates the npc_types cache (will cause a larger database hit on #repop but is more convienent)." ON)
|
OPTION(EQEMU_DEPOP_INVALIDATES_CACHE "#repop invalidates the npc_types cache (will cause a larger database hit on #repop but is more convienent)." ON)
|
||||||
|
|
||||||
@ -169,6 +177,16 @@ ADD_DEFINITIONS(-DEQDEBUG=${EQEMU_DEBUG_LEVEL})
|
|||||||
ADD_DEFINITIONS(-DINVERSEXY)
|
ADD_DEFINITIONS(-DINVERSEXY)
|
||||||
ADD_DEFINITIONS(-DFIELD_ITEMS)
|
ADD_DEFINITIONS(-DFIELD_ITEMS)
|
||||||
ADD_DEFINITIONS(-DMAP_DIR="./Maps")
|
ADD_DEFINITIONS(-DMAP_DIR="./Maps")
|
||||||
|
ADD_DEFINITIONS(-DRATEBASE=${EQEMU_STREAM_SEND_RATE})
|
||||||
|
ADD_DEFINITIONS(-DDECAYBASE=${EQEMU_STREAM_DECAY_RATE})
|
||||||
|
ADD_DEFINITIONS(-DRETRANSMIT_TIMEOUT_MULT=${EQEMU_STREAM_RETRANSMIT_TIMEOUT_MUL})
|
||||||
|
ADD_DEFINITIONS(-DRETRANSMIT_TIMEOUT_MAX=${EQEMU_STREAM_RETRANSMIT_TIMEOUT_MAX})
|
||||||
|
ADD_DEFINITIONS(-DAVERAGE_DELTA_MAX=${EQEMU_STREAM_AVERAGE_DELTA_MAX})
|
||||||
|
IF(EQEMU_STREAM_RETRANSMIT_ACKED_PACKETS)
|
||||||
|
ADD_DEFINITIONS(-DRETRANSMIT_ACKED_PACKETS=true)
|
||||||
|
ELSE(EQEMU_STREAM_RETRANSMIT_ACKED_PACKETS)
|
||||||
|
ADD_DEFINITIONS(-DRETRANSMIT_ACKED_PACKETS=false)
|
||||||
|
ENDIF(EQEMU_STREAM_RETRANSMIT_ACKED_PACKETS)
|
||||||
|
|
||||||
#Find everything we need
|
#Find everything we need
|
||||||
FIND_PACKAGE(ZLIB REQUIRED)
|
FIND_PACKAGE(ZLIB REQUIRED)
|
||||||
|
|||||||
@ -21,13 +21,29 @@
|
|||||||
#define FLAG_COMPRESSED 0x01
|
#define FLAG_COMPRESSED 0x01
|
||||||
#define FLAG_ENCODED 0x04
|
#define FLAG_ENCODED 0x04
|
||||||
|
|
||||||
#define RATEBASE 1048576 // 1 MB
|
#ifndef RATEBASE
|
||||||
#define DECAYBASE 78642 // RATEBASE/10
|
#define RATEBASE 1048576
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DECAYBASE
|
||||||
|
#define DECAYBASE 78642
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RETRANSMIT_TIMEOUT_MULT
|
||||||
#define RETRANSMIT_TIMEOUT_MULT 3.0
|
#define RETRANSMIT_TIMEOUT_MULT 3.0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RETRANSMIT_TIMEOUT_MAX
|
||||||
#define RETRANSMIT_TIMEOUT_MAX 5000
|
#define RETRANSMIT_TIMEOUT_MAX 5000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AVERAGE_DELTA_MAX
|
||||||
#define AVERAGE_DELTA_MAX 2500
|
#define AVERAGE_DELTA_MAX 2500
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RETRANSMIT_ACKED_PACKETS
|
||||||
#define RETRANSMIT_ACKED_PACKETS true
|
#define RETRANSMIT_ACKED_PACKETS true
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
struct SessionRequest {
|
struct SessionRequest {
|
||||||
@ -62,9 +78,6 @@ struct SessionStats {
|
|||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
class OpcodeManager;
|
class OpcodeManager;
|
||||||
//extern OpcodeManager *EQNetworkOpcodeManager;
|
|
||||||
|
|
||||||
//class EQStreamFactory;
|
|
||||||
class EQStreamPair;
|
class EQStreamPair;
|
||||||
class EQRawApplicationPacket;
|
class EQRawApplicationPacket;
|
||||||
|
|
||||||
@ -142,8 +155,6 @@ class EQStream : public EQStreamInterface {
|
|||||||
|
|
||||||
OpcodeManager **OpMgr;
|
OpcodeManager **OpMgr;
|
||||||
|
|
||||||
// EQStreamFactory *const Factory;
|
|
||||||
|
|
||||||
EQRawApplicationPacket *MakeApplicationPacket(EQProtocolPacket *p);
|
EQRawApplicationPacket *MakeApplicationPacket(EQProtocolPacket *p);
|
||||||
EQRawApplicationPacket *MakeApplicationPacket(const unsigned char *buf, uint32 len);
|
EQRawApplicationPacket *MakeApplicationPacket(const unsigned char *buf, uint32 len);
|
||||||
EQProtocolPacket *MakeProtocolPacket(const unsigned char *buf, uint32 len);
|
EQProtocolPacket *MakeProtocolPacket(const unsigned char *buf, uint32 len);
|
||||||
@ -167,8 +178,6 @@ class EQStream : public EQStreamInterface {
|
|||||||
void SetSession(uint32 s) { Session=s; }
|
void SetSession(uint32 s) { Session=s; }
|
||||||
|
|
||||||
void ProcessPacket(EQProtocolPacket *p);
|
void ProcessPacket(EQProtocolPacket *p);
|
||||||
// virtual void DispatchPacket(EQApplicationPacket *p) { p->DumpRaw(); }
|
|
||||||
|
|
||||||
|
|
||||||
bool Stale(uint32 now, uint32 timeout=30) { return (LastPacket && (now-LastPacket) > timeout); }
|
bool Stale(uint32 now, uint32 timeout=30) { return (LastPacket && (now-LastPacket) > timeout); }
|
||||||
|
|
||||||
@ -190,7 +199,6 @@ class EQStream : public EQStreamInterface {
|
|||||||
EQStream() { init(); remote_ip = 0; remote_port = 0; State=UNESTABLISHED; StreamType=UnknownStream; compressed=true; encoded=false; app_opcode_size=2; bytes_sent=0; bytes_recv=0; create_time=Timer::GetTimeSeconds(); }
|
EQStream() { init(); remote_ip = 0; remote_port = 0; State=UNESTABLISHED; StreamType=UnknownStream; compressed=true; encoded=false; app_opcode_size=2; bytes_sent=0; bytes_recv=0; create_time=Timer::GetTimeSeconds(); }
|
||||||
EQStream(sockaddr_in addr) { init(); remote_ip=addr.sin_addr.s_addr; remote_port=addr.sin_port; State=UNESTABLISHED; StreamType=UnknownStream; compressed=true; encoded=false; app_opcode_size=2; bytes_sent=0; bytes_recv=0; create_time=Timer::GetTimeSeconds(); }
|
EQStream(sockaddr_in addr) { init(); remote_ip=addr.sin_addr.s_addr; remote_port=addr.sin_port; State=UNESTABLISHED; StreamType=UnknownStream; compressed=true; encoded=false; app_opcode_size=2; bytes_sent=0; bytes_recv=0; create_time=Timer::GetTimeSeconds(); }
|
||||||
virtual ~EQStream() { RemoveData(); SetState(CLOSED); }
|
virtual ~EQStream() { RemoveData(); SetState(CLOSED); }
|
||||||
// inline void SetFactory(EQStreamFactory *f) { Factory=f; }
|
|
||||||
void SetMaxLen(uint32 length) { MaxLen=length; }
|
void SetMaxLen(uint32 length) { MaxLen=length; }
|
||||||
|
|
||||||
//interface used by application (EQStreamInterface)
|
//interface used by application (EQStreamInterface)
|
||||||
@ -219,10 +227,8 @@ class EQStream : public EQStreamInterface {
|
|||||||
|
|
||||||
inline EQStreamState GetState() { EQStreamState s; MState.lock(); s=State; MState.unlock(); return s; }
|
inline EQStreamState GetState() { EQStreamState s; MState.lock(); s=State; MState.unlock(); return s; }
|
||||||
|
|
||||||
// static EQProtocolPacket *Read(int eq_fd, sockaddr_in *from);
|
|
||||||
static SeqOrder CompareSequence(uint16 expected_seq , uint16 seq);
|
static SeqOrder CompareSequence(uint16 expected_seq , uint16 seq);
|
||||||
|
|
||||||
// void Close() { SendDisconnect(); }
|
|
||||||
bool CheckActive() { return GetState()==ESTABLISHED; }
|
bool CheckActive() { return GetState()==ESTABLISHED; }
|
||||||
bool CheckClosed() { return GetState()==CLOSED; }
|
bool CheckClosed() { return GetState()==CLOSED; }
|
||||||
void SetOpcodeSize(uint8 s) { app_opcode_size = s; }
|
void SetOpcodeSize(uint8 s) { app_opcode_size = s; }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user