From e942db1c8d87b7db286545d72c604e879f7aeab0 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 9 Jul 2011 14:11:44 +0000 Subject: Cleanup of the messaging interface. --- src/core/netserver.cc | 49 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) (limited to 'src/core/netserver.cc') diff --git a/src/core/netserver.cc b/src/core/netserver.cc index 37adfc1..12210a5 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -476,14 +476,46 @@ void NetServer::frame(unsigned long timestamp) * zone */ -// send a "msg " message to one client -void NetServer::send_message(NetClient *client, const char *channel, std::string const & message) +// send a message on a specified channel to a single client +void NetServer::send_message(NetClient *client, const Message::Channel channel, const std::string & message) { - if (!channel) + if (!message.size()) return; + std::string msg_channel; + switch (channel) { + case core::Message::Info: // Info message + msg_channel.assign("info"); + break; + + case core::Message::Local: // Chat message in the local zone + msg_channel.assign("local"); + break; + + case core::Message::Public: // Public chat message + msg_channel.assign("public"); + break; + + case core::Message::Private: // Private chat message + msg_channel.assign("private"); + break; + + case core::Message::RCon: // RCon message + msg_channel.assign("rcon"); + break; + + case core::Message::Sound: // Sound event + msg_channel.assign("snd"); + break; + + default: + con_warn << "message on unknown channel " << channel << "!" << std::endl; + return; + break; + } + std::string msg("msg "); - msg.append(channel); + msg.append(msg_channel); msg += ' '; msg.append(message); msg += '\n'; @@ -491,6 +523,7 @@ void NetServer::send_message(NetClient *client, const char *channel, std::string client->send_raw(msg); } + // disconnect a client void NetServer::send_disconnect(NetClient *client) { @@ -700,7 +733,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me netmsgstream << "client " << protover << " server " << PROTOCOLVERSION << "!\n"; con_print << client->host() << ":" << client->port() << " " << netmsgstream.str() << std::endl; - send_message(client, "info", netmsgstream.str()); + send_message(client, Message::Info, netmsgstream.str()); send_disconnect(client); } else { @@ -710,7 +743,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me std::string message("Unknown client protocol version!"); con_print << client->host() << ":" << client->port() << " " << message << std::endl; - send_message(client, "info", message); + send_message(client, Message::Info, message); send_disconnect(client); } @@ -865,7 +898,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me core::CommandBuffer::exec(); while (console()->rconbuf().size()) { - send_message(client, "rcon", (*console()->rconbuf().begin())); + send_message(client, Message::RCon, (*console()->rconbuf().begin())); core::console()->rconbuf().pop_front(); } @@ -873,7 +906,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me console()->set_rcon(false); } else { - send_message(client, "info", "rcon access denied"); + send_message(client, Message::Info, "rcon access denied"); con_warn << "^B" << client->player()->name() << "^W rcon access denied" << std::endl; } } -- cgit v1.2.3