using Ion.Net.Messages; namespace Ion.HabboHotel.Client { public partial class ClientMessageHandler { #region Fields private const int HIGHEST_MESSAGEID = 2002; // class="com.sulake.habbo.communication.messages.outgoing.handshake::GenerateSecretKeyMessageComposer" /> private GameClient mSession; private ClientMessage Request; private ServerMessage Response; private delegate void RequestHandler(); private RequestHandler[] mRequestHandlers; #endregion #region Constructor public ClientMessageHandler(GameClient pSession) { mSession = pSession; mRequestHandlers = new RequestHandler[HIGHEST_MESSAGEID + 1]; Response = new ServerMessage(0); } #endregion #region Methods public ServerMessage GetResponse() { return Response; } /// /// Destroys all the resources in the ClientMessageHandler. /// public void Destroy() { mSession = null; mRequestHandlers = null; Request = null; Response = null; } /// /// Invokes the matching request handler for a given ClientMessage. /// /// The ClientMessage object to process. public void HandleRequest(ClientMessage request) { IonEnvironment.GetLog().WriteLine("[" + mSession.ID + "] --> " + request.Header + request.GetContentString()); if (request.ID > HIGHEST_MESSAGEID) return; // Not in protocol if (mRequestHandlers[request.ID] == null) return; // Handler not registered // Handle request Request = request; mRequestHandlers[request.ID].Invoke(); Request = null; } /// /// Sends the current response ServerMessage on the stack. /// public void SendResponse() { if (Response.ID > 0) { mSession.GetConnection().SendMessage(Response); } } public void SendContent(string content) { mSession.GetConnection().SendData(content); } #endregion } }