class Connection;
}
+#define CI_ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0]))
+
enum ClientState
{
- Invalid,
- Disconnecting,
- Denied,
- Created,
- InitSent,
- InitDone,
- DefinitionsSent,
- Active
-};
-
-static const char* statenames[] = {
- "Invalid",
- "Disconnecting",
- "Denied",
- "Created",
- "InitSent",
- "InitDone",
- "DefinitionsSent",
- "Active"
+ CS_Invalid,
+ CS_Disconnecting,
+ CS_Denied,
+ CS_Created,
+ CS_InitSent,
+ CS_InitDone,
+ CS_DefinitionsSent,
+ CS_Active
};
enum ClientStateEvent
{
- Init,
- GotInit2,
- SetDenied,
- SetDefinitionsSent,
- SetClientReady,
- Disconnect
+ CSE_Init,
+ CSE_GotInit2,
+ CSE_SetDenied,
+ CSE_SetDefinitionsSent,
+ CSE_SetClientReady,
+ CSE_Disconnect
};
/*
net_proto_version(0),
m_time_from_building(9999),
m_pending_serialization_version(SER_FMT_VER_INVALID),
- m_state(Created),
+ m_state(CS_Created),
m_nearest_unsent_d(0),
m_nearest_unsent_reset_timer(0.0),
m_excess_gotblocks(0),
- m_nothing_to_send_counter(0),
m_nothing_to_send_pause_timer(0.0),
m_name(""),
m_version_major(0),
void SetBlockNotSent(v3s16 p);
void SetBlocksNotSent(std::map<v3s16, MapBlock*> &blocks);
+ /**
+ * tell client about this block being modified right now.
+ * this information is required to requeue the block in case it's "on wire"
+ * while modification is processed by server
+ * @param p position of modified block
+ */
+ void ResendBlockIfOnWire(v3s16 p);
+
s32 SendingCount()
{
return m_blocks_sending.size();
u32 m_excess_gotblocks;
// CPU usage optimization
- u32 m_nothing_to_send_counter;
float m_nothing_to_send_pause_timer;
/*
void step(float dtime);
/* get list of active client id's */
- std::list<u16> getClientIDs(ClientState min_state=Active);
+ std::list<u16> getClientIDs(ClientState min_state=CS_Active);
/* get list of client player names */
std::vector<std::string> getPlayerNames();
void CreateClient(u16 peer_id);
/* get a client by peer_id */
- RemoteClient* getClientNoEx(u16 peer_id, ClientState state_min=Active);
+ RemoteClient* getClientNoEx(u16 peer_id, ClientState state_min=CS_Active);
/* get client by peer_id (make sure you have list lock before!*/
- RemoteClient* lockedGetClientNoEx(u16 peer_id, ClientState state_min=Active);
+ RemoteClient* lockedGetClientNoEx(u16 peer_id, ClientState state_min=CS_Active);
/* get state of client by id*/
ClientState getClientState(u16 peer_id);
void setEnv(ServerEnvironment* env)
{ assert(m_env == 0); m_env = env; }
- static std::string state2Name(ClientState state) {
- assert(state < sizeof(statenames));
- return statenames[state];
- }
+ static std::string state2Name(ClientState state);
protected:
//TODO find way to avoid this functions
JMutex m_env_mutex;
float m_print_info_timer;
+
+ static const char *statenames[];
};
#endif