Shadowrun: Awakened 29 September 2011 - Build 871
Public Member Functions
SraNetwork::LeaveChannelMessage Class Reference

#include <LeaveChannelMessage.h>

Inheritance diagram for SraNetwork::LeaveChannelMessage:

List of all members.

Public Member Functions

virtual SraPacketcreatePacketFromData (const unsigned char *data)
 LeaveChannelMessage (void)
virtual void process (MessageData *message)
 ~LeaveChannelMessage (void)

Detailed Description

Definition at line 18 of file LeaveChannelMessage.h.


Constructor & Destructor Documentation

SraNetwork::LeaveChannelMessage::LeaveChannelMessage ( void  )

Definition at line 9 of file LeaveChannelMessage.cpp.

    {
    }
SraNetwork::LeaveChannelMessage::~LeaveChannelMessage ( void  )

Definition at line 14 of file LeaveChannelMessage.cpp.

    {
    }

Member Function Documentation

SraPacket * SraNetwork::LeaveChannelMessage::createPacketFromData ( const unsigned char *  data) [virtual]

Implements SraNetwork::SraBaseMessage.

Definition at line 19 of file LeaveChannelMessage.cpp.

    {
        return (LeaveChannelPacket*)data;
    }
void SraNetwork::LeaveChannelMessage::process ( MessageData message) [virtual]

Implements SraNetwork::SraBaseMessage.

Definition at line 24 of file LeaveChannelMessage.cpp.

References SraNetwork::MessageData::address, SraNetwork::LeaveChannelPacket::channelId, SraNetwork::LeaveChannelPacket::Deserialize(), SraNetwork::ReplyPacket::FAIL, SraNetwork::WorldServer::getChatinterface(), SraNetwork::ClientRegister::getClientFromAddress(), SraNetwork::WorldServer::getClientInterface(), SraNetwork::ClientRegister::getInstance(), SraNetwork::ID_CHAT_CHANNEL_REGISTER, MEDIUM_PRIORITY, SraNetwork::ReplyPacket::messageOpCode, packet, RELIABLE_ORDERED, SraNetwork::ReplyPacket::replyCode, SraNetwork::ReplyPacket::replyMessage, RakNet::RakPeerInterface::Send(), SraNetwork::ReplyPacket::Serialize(), stream, and SraNetwork::MessageData::stream.

    {
        //Client has sent login data
        std::cout << "Processing leave channel message" << std::endl;
        
        ClientRegister* reg = ClientRegister::getInstance();
        const SraClientData* client = reg->getClientFromAddress( message->address );
        if (client == NULL)
        {
            printf("Error: A non existing client is used in LeaveChannelMeesage::process\n");
            return;
        }

        LeaveChannelPacket packet;
        packet.Deserialize( &message->stream );
        
        // Send a join message to the chat server
        RakPeerInterface* chatInterface = WorldServer::getChatinterface(packet.channelId);
        if (chatInterface == NULL)
        {
            //If the channel join failed, send a reply to the client
            RakNet::RakPeerInterface *clientI = SraNetwork::WorldServer::getClientInterface();

            BitStream stream;

            ReplyPacket rp;
            rp.replyCode = ReplyPacket::FAIL;
            rp.messageOpCode = ID_CHAT_CHANNEL_REGISTER;
            rp.replyMessage = "LeaveChannel failed, please check the channel name.";
            rp.Serialize(&stream);
            clientI->Send( &stream, 
                MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, message->address, false);
        }
        else
        {
            printf("Forwarding request to the chat server\n");
            // We will simply forward the request to the chat server now.
            // The chat server will check if the requested channel exists and
            // if the player is allowed to join it.
            // We don't need to send a client answer either, because the chat
            // server will send it's own IP
            chatInterface->Send(&message->stream, MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, message->address, false);
        }
    }

The documentation for this class was generated from the following files:

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