Shadowrun: Awakened 29 September 2011 - Build 871
ClientLoginMessage.cpp
Go to the documentation of this file.
00001 #include "ClientLoginMessage.h"
00002 #include "ClientRegister.h"
00003 #include "WorldServer.h"
00004 #include "ReplyPacket.h"
00005 #include "LoginReplyPacket.h"
00006 #include "LoginPacket.h"
00007 
00008 namespace SraNetwork
00009 {
00010     ClientLoginMessage::ClientLoginMessage(void)
00011     {
00012     }
00013 
00014 
00015     ClientLoginMessage::~ClientLoginMessage(void)
00016     {
00017         std::cout << "Deleting login message" << std::endl;
00018     }
00019 
00020     SraPacket* ClientLoginMessage::createPacketFromData(const unsigned char* data)
00021     {
00022         return (LoginPacket*)data;
00023     }
00024 
00025     void ClientLoginMessage::process(MessageData* message)
00026     {
00027         //Client has sent login data
00028         std::cout << "Processing login message" << std::endl;
00029 
00030         ClientRegister* reg = ClientRegister::getInstance();
00031         LoginPacket packet;
00032         packet.Deserialize( &message->stream );
00033         std::string cStrUser = packet.username.C_String();
00034         std::string cStrPw = packet.password.C_String();
00035         int pID = reg->loginClient(cStrUser, cStrPw, message->address);
00036 
00037         //Even if the player faild to login, we will send an answer
00038         RakNet::RakPeerInterface *clientI = SraNetwork::WorldServer::getClientInterface();
00039 
00040         if (clientI != NULL) 
00041         {
00042             BitStream stream;
00043 
00044             if (pID == -1)
00045             {
00046                 ReplyPacket rp;
00047                 rp.replyCode = ReplyPacket::FAIL;
00048                 rp.messageOpCode = ID_LOGIN_REP;
00049                 rp.replyMessage = "Login failed, please check username and password";
00050                 rp.Serialize(&stream);
00051                 clientI->Send( &stream, 
00052                     MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, message->address, false);
00053             }
00054             else 
00055             {
00056                 // Login successfull, reply with the pID
00057                 LoginReplyPacket lp;
00058                 lp.clientID = pID;
00059                 lp.Serialize(&stream);
00060                 clientI->Send( &stream,
00061                     MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, message->address, false);
00062             }
00063             
00064         }
00065     }
00066 }

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net