1 #include "rconsession.h" |
1 #include "rconsession.h" |
2 #include "../interface.h" |
2 #include "../interface.h" |
3 |
|
4 RCONSession* g_rconSession = nullptr; |
|
5 |
3 |
6 // ------------------------------------------------------------------------------------------------- |
4 // ------------------------------------------------------------------------------------------------- |
7 // |
5 // |
8 RCONSession::RCONSession() : |
6 RCONSession::RCONSession() : |
9 m_state (RCON_DISCONNECTED), |
7 m_state (RCON_DISCONNECTED), |
10 m_lastPing (0), |
8 m_lastPing (0), |
11 m_numAdmins (0) {} |
9 m_numAdmins (0) |
12 |
10 { |
13 // ------------------------------------------------------------------------------------------------- |
11 if (not m_socket.set_blocking (false)) |
14 // |
12 { |
15 STATIC METHOD |
13 print_to (stderr, "unable to set socket as non-blocking: %s\n", |
16 RCONSession::new_session() -> RCONSession* |
14 m_socket.error_string().chars()); |
17 { |
15 exit (EXIT_FAILURE); |
18 if (g_rconSession != NULL) |
16 } |
19 { |
17 } |
20 g_rconSession->disconnect(); |
18 |
21 delete g_rconSession; |
19 // ------------------------------------------------------------------------------------------------- |
22 } |
20 // |
23 |
21 RCONSession::~RCONSession() {} |
24 g_rconSession = new RCONSession; |
|
25 |
|
26 if (not g_rconSession->socket()->set_blocking (false)) |
|
27 { |
|
28 print ("unable to set socket as non-blocking: %s\n", |
|
29 g_rconSession->socket()->error_string().chars()); |
|
30 delete g_rconSession; |
|
31 return nullptr; |
|
32 } |
|
33 |
|
34 return g_rconSession; |
|
35 } |
|
36 |
|
37 // ------------------------------------------------------------------------------------------------- |
|
38 // |
|
39 RCONSession::~RCONSession() |
|
40 { |
|
41 disconnect(); |
|
42 |
|
43 if (g_rconSession == this) |
|
44 g_rconSession = nullptr; |
|
45 } |
|
46 |
22 |
47 // ------------------------------------------------------------------------------------------------- |
23 // ------------------------------------------------------------------------------------------------- |
48 // |
24 // |
49 METHOD |
25 METHOD |
50 RCONSession::connect (IPAddress address) -> void |
26 RCONSession::connect (IPAddress address) -> void |
277 // ------------------------------------------------------------------------------------------------- |
253 // ------------------------------------------------------------------------------------------------- |
278 // |
254 // |
279 STATIC METHOD |
255 STATIC METHOD |
280 RCONSession::get_session() -> RCONSession* |
256 RCONSession::get_session() -> RCONSession* |
281 { |
257 { |
282 if (g_rconSession == nullptr) |
258 static RCONSession session; |
283 new_session(); |
259 return &session; |
284 |
|
285 return g_rconSession; |
|
286 } |
260 } |
287 |
261 |
288 // ------------------------------------------------------------------------------------------------- |
262 // ------------------------------------------------------------------------------------------------- |
289 // |
263 // |
290 METHOD |
264 METHOD |