root/trunk/src/game/WorldSocket.h @ 2

Revision 2, 8.0 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

Line 
1/*
2 * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17 */
18
19/// \addtogroup u2w
20/// @{
21/// \file
22
23#ifndef __WORLDSOCKET_H
24#define __WORLDSOCKET_H
25
26#include "sockets/TcpSocket.h"
27#include "Auth/AuthCrypt.h"
28
29enum ResponseCodes
30{
31    RESPONSE_SUCCESS                                       = 0x00,
32    RESPONSE_FAILURE                                       = 0x01,
33    RESPONSE_CANCELLED                                     = 0x02,
34    RESPONSE_DISCONNECTED                                  = 0x03,
35    RESPONSE_FAILED_TO_CONNECT                             = 0x04,
36    RESPONSE_CONNECTED                                     = 0x05,
37    RESPONSE_VERSION_MISMATCH                              = 0x06,
38
39    CSTATUS_CONNECTING                                     = 0x07,
40    CSTATUS_NEGOTIATING_SECURITY                           = 0x08,
41    CSTATUS_NEGOTIATION_COMPLETE                           = 0x09,
42    CSTATUS_NEGOTIATION_FAILED                             = 0x0A,
43    CSTATUS_AUTHENTICATING                                 = 0x0B,
44
45    AUTH_OK                                                = 0x0C,
46    AUTH_FAILED                                            = 0x0D,
47    AUTH_REJECT                                            = 0x0E,
48    AUTH_BAD_SERVER_PROOF                                  = 0x0F,
49    AUTH_UNAVAILABLE                                       = 0x10,
50    AUTH_SYSTEM_ERROR                                      = 0x11,
51    AUTH_BILLING_ERROR                                     = 0x12,
52    AUTH_BILLING_EXPIRED                                   = 0x13,
53    AUTH_VERSION_MISMATCH                                  = 0x14,
54    AUTH_UNKNOWN_ACCOUNT                                   = 0x15,
55    AUTH_INCORRECT_PASSWORD                                = 0x16,
56    AUTH_SESSION_EXPIRED                                   = 0x17,
57    AUTH_SERVER_SHUTTING_DOWN                              = 0x18,
58    AUTH_ALREADY_LOGGING_IN                                = 0x19,
59    AUTH_LOGIN_SERVER_NOT_FOUND                            = 0x1A,
60    AUTH_WAIT_QUEUE                                        = 0x1B,
61    AUTH_BANNED                                            = 0x1C,
62    AUTH_ALREADY_ONLINE                                    = 0x1D,
63    AUTH_NO_TIME                                           = 0x1E,
64    AUTH_DB_BUSY                                           = 0x1F,
65    AUTH_SUSPENDED                                         = 0x20,
66    AUTH_PARENTAL_CONTROL                                  = 0x21,
67    AUTH_LOCKED_ENFORCED                                   = 0x22,
68
69    REALM_LIST_IN_PROGRESS                                 = 0x23,
70    REALM_LIST_SUCCESS                                     = 0x24,
71    REALM_LIST_FAILED                                      = 0x25,
72    REALM_LIST_INVALID                                     = 0x26,
73    REALM_LIST_REALM_NOT_FOUND                             = 0x27,
74
75    ACCOUNT_CREATE_IN_PROGRESS                             = 0x28,
76    ACCOUNT_CREATE_SUCCESS                                 = 0x29,
77    ACCOUNT_CREATE_FAILED                                  = 0x2A,
78
79    CHAR_LIST_RETRIEVING                                   = 0x2B,
80    CHAR_LIST_RETRIEVED                                    = 0x2C,
81    CHAR_LIST_FAILED                                       = 0x2D,
82
83    CHAR_CREATE_IN_PROGRESS                                = 0x2E,
84    CHAR_CREATE_SUCCESS                                    = 0x2F,
85    CHAR_CREATE_ERROR                                      = 0x30,
86    CHAR_CREATE_FAILED                                     = 0x31,
87    CHAR_CREATE_NAME_IN_USE                                = 0x32,
88    CHAR_CREATE_DISABLED                                   = 0x33,
89    CHAR_CREATE_PVP_TEAMS_VIOLATION                        = 0x34,
90    CHAR_CREATE_SERVER_LIMIT                               = 0x35,
91    CHAR_CREATE_ACCOUNT_LIMIT                              = 0x36,
92    CHAR_CREATE_SERVER_QUEUE                               = 0x37,
93    CHAR_CREATE_ONLY_EXISTING                              = 0x38,
94    CHAR_CREATE_EXPANSION                                  = 0x39,
95
96    CHAR_DELETE_IN_PROGRESS                                = 0x3A,
97    CHAR_DELETE_SUCCESS                                    = 0x3B,
98    CHAR_DELETE_FAILED                                     = 0x3C,
99    CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER                 = 0x3D,
100    CHAR_DELETE_FAILED_GUILD_LEADER                        = 0x3E,
101    CHAR_DELETE_FAILED_ARENA_CAPTAIN                       = 0x3F,
102
103    CHAR_LOGIN_IN_PROGRESS                                 = 0x40,
104    CHAR_LOGIN_SUCCESS                                     = 0x41,
105    CHAR_LOGIN_NO_WORLD                                    = 0x42,
106    CHAR_LOGIN_DUPLICATE_CHARACTER                         = 0x43,
107    CHAR_LOGIN_NO_INSTANCES                                = 0x44,
108    CHAR_LOGIN_FAILED                                      = 0x45,
109    CHAR_LOGIN_DISABLED                                    = 0x46,
110    CHAR_LOGIN_NO_CHARACTER                                = 0x47,
111    CHAR_LOGIN_LOCKED_FOR_TRANSFER                         = 0x48,
112    CHAR_LOGIN_LOCKED_BY_BILLING                           = 0x49,
113
114    CHAR_NAME_SUCCESS                                      = 0x4A,
115    CHAR_NAME_FAILURE                                      = 0x4B,
116    CHAR_NAME_NO_NAME                                      = 0x4C,
117    CHAR_NAME_TOO_SHORT                                    = 0x4D,
118    CHAR_NAME_TOO_LONG                                     = 0x4E,
119    CHAR_NAME_INVALID_CHARACTER                            = 0x4F,
120    CHAR_NAME_MIXED_LANGUAGES                              = 0x50,
121    CHAR_NAME_PROFANE                                      = 0x51,
122    CHAR_NAME_RESERVED                                     = 0x52,
123    CHAR_NAME_INVALID_APOSTROPHE                           = 0x53,
124    CHAR_NAME_MULTIPLE_APOSTROPHES                         = 0x54,
125    CHAR_NAME_THREE_CONSECUTIVE                            = 0x55,
126    CHAR_NAME_INVALID_SPACE                                = 0x56,
127    CHAR_NAME_CONSECUTIVE_SPACES                           = 0x57,
128    CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS        = 0x58,
129    CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 0x59,
130    CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME            = 0x5A,
131};
132
133class WorldPacket;
134class SocketHandler;
135class WorldSession;
136
137/// Handle connection with the client software
138class WorldSocket : public TcpSocket
139{
140    public:
141        WorldSocket(ISocketHandler&);
142        ~WorldSocket();
143
144        void SendPacket(WorldPacket const* packet);
145        void CloseSocket();
146
147        void OnAccept();
148        void OnRead();
149        void OnDelete();
150
151        void Update(time_t diff);
152        // Player Queue
153        void SendAuthWaitQue(uint32 position);
154
155        WorldSession* GetSession() const { return _session; }
156    protected:
157        void SendSinglePacket();
158
159    protected:
160        void _HandleAuthSession(WorldPacket& recvPacket);
161        void _HandlePing(WorldPacket& recvPacket);
162
163    private:
164        AuthCrypt _crypt;
165        uint32 _seed;
166        uint32 _cmd;
167        uint16 _remaining;
168        WorldSession* _session;
169
170        ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _sendQueue;
171
172        uint32 m_LastPingMSTime;
173        uint32 m_OverSpeedPings;
174
175        // internal checks
176        void SizeError(WorldPacket const& packet, uint32 size) const;
177};
178#endif
179/// @}
Note: See TracBrowser for help on using the browser.