![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
#include <LeaveChannelMessage.h>
Inheritance diagram for SraNetwork::LeaveChannelMessage:Public Member Functions | |
| virtual SraPacket * | createPacketFromData (const unsigned char *data) |
| LeaveChannelMessage (void) | |
| virtual void | process (MessageData *message) |
| ~LeaveChannelMessage (void) | |
Definition at line 18 of file LeaveChannelMessage.h.
| SraNetwork::LeaveChannelMessage::LeaveChannelMessage | ( | void | ) |
Definition at line 9 of file LeaveChannelMessage.cpp.
{
}
| SraNetwork::LeaveChannelMessage::~LeaveChannelMessage | ( | void | ) |
Definition at line 14 of file LeaveChannelMessage.cpp.
{
}
| 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);
}
}
Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.