summaryrefslogtreecommitdiff
path: root/src/mmo/socket.hpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-04-17 16:10:11 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-04-17 16:10:11 -0700
commitae7b06ff8ad775a945bd677effd72b7fafa13d8d (patch)
tree3de2693f18a39e57008f63926fedf169da5b23ac /src/mmo/socket.hpp
parent15dc4a8c51d0704bb82407c1dc79c751cda7fb42 (diff)
downloadtmwa-ae7b06ff8ad775a945bd677effd72b7fafa13d8d.tar.gz
tmwa-ae7b06ff8ad775a945bd677effd72b7fafa13d8d.tar.bz2
tmwa-ae7b06ff8ad775a945bd677effd72b7fafa13d8d.tar.xz
tmwa-ae7b06ff8ad775a945bd677effd72b7fafa13d8d.zip
Die sensibly, take 1
Diffstat (limited to 'src/mmo/socket.hpp')
-rw-r--r--src/mmo/socket.hpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mmo/socket.hpp b/src/mmo/socket.hpp
index 256c08b..53e0dfd 100644
--- a/src/mmo/socket.hpp
+++ b/src/mmo/socket.hpp
@@ -59,8 +59,14 @@ struct Session
TimeT created;
bool connected;
+private:
/// Flag needed since structure must be freed in a server-dependent manner
bool eof;
+public:
+ void set_eof() { eof = true; }
+ // not everything is a member yet ...
+ bool private_is_eof() { return eof; }
+
/// Currently used by clif_setwaitclose
Timer timed_close;
@@ -87,6 +93,8 @@ struct Session
/// is a player or a server/ladmin
/// Can be set explicitly or via set_defaultparse
void (*func_parse)(Session *);
+ /// Cleanup function since we're not fully RAII yet
+ void (*func_delete)(Session *);
/// Server-specific data type
std::unique_ptr<SessionData, SessionDeleter> session_data;
@@ -141,7 +149,7 @@ void do_parsepacket(void);
/// Change the default parser for newly connected clients
// typically called once per server, but individual clients may identify
// themselves as servers
-void set_defaultparse(void(*defaultparse)(Session *));
+void set_defaultparse(void(*defaultparse)(Session *), void(*defaultdelete)(Session *));
template<class T>
uint8_t *pod_addressof_m(T& structure)