IRC polishing work - kicks are shown, error messages are displayed. Rename somehow buggy still.

This commit is contained in:
lotodore
2007-09-30 16:19:44 +00:00
parent 5edf38a6cb
commit 087a0d0cda
14 changed files with 301 additions and 26 deletions
+4
View File
@@ -129,5 +129,9 @@ void ServerGuiWrapper::SignalNetServerError(int errorID, int osErrorID) { if (my
void ServerGuiWrapper::SignalIrcConnect(const string &server) { if (myIrccb) myIrccb->SignalIrcConnect(server); }
void ServerGuiWrapper::SignalIrcSelfJoined(const string &nickName, const std::string &channel) { if (myIrccb) myIrccb->SignalIrcSelfJoined(nickName, channel); }
void ServerGuiWrapper::SignalIrcPlayerJoined(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerJoined(nickName); }
void ServerGuiWrapper::SignalIrcPlayerChanged(const string &oldNick, const string &newNick) { if (myIrccb) myIrccb->SignalIrcPlayerChanged(oldNick, newNick); }
void ServerGuiWrapper::SignalIrcPlayerKicked(const string &nickName, const string &byWhom, const string &reason) { if (myIrccb) myIrccb->SignalIrcPlayerKicked(nickName, byWhom, reason); }
void ServerGuiWrapper::SignalIrcPlayerLeft(const string &nickName) { if (myIrccb) myIrccb->SignalIrcPlayerLeft(nickName); }
void ServerGuiWrapper::SignalIrcChatMsg(const string &nickName, const string &msg) { if (myIrccb) myIrccb->SignalIrcChatMsg(nickName, msg); }
void ServerGuiWrapper::SignalIrcError(int errorCode) { if (myIrccb) myIrccb->SignalIrcError(errorCode); }
void ServerGuiWrapper::SignalIrcServerError(int errorCode) {if (myIrccb) myIrccb->SignalIrcServerError(errorCode); }
+4
View File
@@ -114,8 +114,12 @@ public:
void SignalIrcConnect(const std::string &server);
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
void SignalIrcPlayerJoined(const std::string &nickName);
void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick);
void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason);
void SignalIrcPlayerLeft(const std::string &nickName);
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
void SignalIrcError(int errorCode);
void SignalIrcServerError(int errorCode);
private:
@@ -36,12 +36,6 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(QWidget *parent, ConfigFile *c)
connect( lineEdit_ChatInput, SIGNAL( returnPressed () ), this, SLOT( sendChatMessage() ) );
connect( lineEdit_ChatInput, SIGNAL( textChanged (QString) ), this, SLOT( checkChatInputLength(QString) ) );
connect( this, SIGNAL( signalChatConnect(QString) ), myChat, SLOT( connected (QString) ) );
connect( this, SIGNAL( signalChatSelfJoined(QString, QString) ), myChat, SLOT( selfJoined (QString, QString) ) );
connect( this, SIGNAL( signalChatPlayerJoined (QString) ), myChat, SLOT( playerJoined (QString) ) );
connect( this, SIGNAL( signalChatPlayerLeft (QString) ), myChat, SLOT( playerLeft (QString) ) );
connect( this, SIGNAL( signalChatMessage (QString, QString) ), myChat, SLOT( displayMessage (QString, QString) ) );
clearDialog();
}
@@ -40,18 +40,13 @@ public:
void exec();
LobbyChat *getLobbyChat() { return myChat; }
void setSession(Session *session);
Session& getSession() { return *mySession; }
void setMyW ( mainWindowImpl* theValue ) { myW = theValue; }
signals:
void signalChatConnect(QString server);
void signalChatSelfJoined(QString nickName, QString channel);
void signalChatPlayerJoined(QString nickName);
void signalChatPlayerLeft(QString nickName);
void signalChatMessage(QString nickName, QString msg);
public slots:
void createGame();
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "lobbychat.h"
#define IN_INCLUDE_LIBIRC_H
#include <core/libircclient/include/libirc_rfcnumeric.h>
#include <net/socket_msg.h>
#include "gamelobbydialogimpl.h"
#include "session.h"
@@ -71,6 +74,29 @@ void LobbyChat::playerJoined(QString playerName)
myLobby->treeWidget_NickList->sortItems(0, Qt::AscendingOrder);
}
void LobbyChat::playerChanged(QString oldNick, QString newNick)
{
QList<QTreeWidgetItem *> tmpList(myLobby->treeWidget_NickList->findItems(oldNick, Qt::MatchExactly));
if (!tmpList.empty())
tmpList.front()->setData(0, Qt::DisplayRole, newNick);
if (myNick == oldNick)
myNick = newNick;
}
void LobbyChat::playerKicked(QString nickName, QString byWhom, QString reason)
{
if (myNick == nickName)
{
myLobby->accept();
QMessageBox::warning(myLobby, tr("Network Notification"),
tr("You were kicked from the server."),
QMessageBox::Close);
}
else
myLobby->textBrowser_ChatDisplay->append(nickName + " " + tr("was kicked from the server by") + " " + byWhom + " (" + reason + ")");
}
void LobbyChat::playerLeft(QString playerName)
{
QList<QTreeWidgetItem *> tmpList(myLobby->treeWidget_NickList->findItems(playerName, Qt::MatchExactly));
@@ -106,3 +132,92 @@ void LobbyChat::clearChat() {
// // lineEdit_ChatInput->setCompleter(completer);
}
void LobbyChat::chatError(int errorCode)
{
QString errorMsg;
switch (errorCode)
{
case ERR_IRC_INTERNAL :
case ERR_IRC_SELECT_FAILED :
case ERR_IRC_RECV_FAILED :
case ERR_IRC_SEND_FAILED :
case ERR_IRC_INVALID_PARAM :
errorMsg = tr("An internal IRC error has occured:") + " " + QString::number(errorCode);
break;
case ERR_IRC_CONNECT_FAILED :
errorMsg = tr("Could not connect to the IRC server. Chat will be unavailable.");
break;
case ERR_IRC_TERMINATED :
errorMsg = tr("The IRC server terminated the connection. Chat will be unavailable.");
break;
case ERR_IRC_TIMEOUT :
errorMsg = tr("An IRC action timed out.");
break;
}
if (errorMsg.size())
myLobby->textBrowser_ChatDisplay->append(errorMsg);
}
void LobbyChat::chatServerError(int errorCode)
{
QString errorMsg;
switch (errorCode)
{
case LIBIRC_RFC_ERR_NOSUCHNICK :
case LIBIRC_RFC_ERR_NOSUCHCHANNEL :
case LIBIRC_RFC_ERR_CANNOTSENDTOCHAN :
case LIBIRC_RFC_ERR_TOOMANYCHANNELS :
case LIBIRC_RFC_ERR_WASNOSUCHNICK :
case LIBIRC_RFC_ERR_TOOMANYTARGETS :
case LIBIRC_RFC_ERR_NOSUCHSERVICE :
case LIBIRC_RFC_ERR_NOORIGIN :
case LIBIRC_RFC_ERR_NORECIPIENT :
case LIBIRC_RFC_ERR_NOTEXTTOSEND :
case LIBIRC_RFC_ERR_NOTOPLEVEL :
case LIBIRC_RFC_ERR_WILDTOPLEVEL :
case LIBIRC_RFC_ERR_BADMASK :
case LIBIRC_RFC_ERR_UNKNOWNCOMMAND :
case LIBIRC_RFC_ERR_NOMOTD :
case LIBIRC_RFC_ERR_NOADMININFO :
case LIBIRC_RFC_ERR_FILEERROR :
case LIBIRC_RFC_ERR_NONICKNAMEGIVEN :
case LIBIRC_RFC_ERR_ERRONEUSNICKNAME :
case LIBIRC_RFC_ERR_UNAVAILRESOURCE :
case LIBIRC_RFC_ERR_USERNOTINCHANNEL :
case LIBIRC_RFC_ERR_NOTONCHANNEL :
case LIBIRC_RFC_ERR_USERONCHANNEL :
case LIBIRC_RFC_ERR_NOLOGIN :
case LIBIRC_RFC_ERR_SUMMONDISABLED :
case LIBIRC_RFC_ERR_USERSDISABLED :
case LIBIRC_RFC_ERR_NOTREGISTERED :
case LIBIRC_RFC_ERR_NEEDMOREPARAMS :
case LIBIRC_RFC_ERR_ALREADYREGISTRED :
case LIBIRC_RFC_ERR_NOPERMFORHOST :
case LIBIRC_RFC_ERR_PASSWDMISMATCH :
case LIBIRC_RFC_ERR_YOUREBANNEDCREEP :
case LIBIRC_RFC_ERR_YOUWILLBEBANNED :
case LIBIRC_RFC_ERR_KEYSET :
case LIBIRC_RFC_ERR_CHANNELISFULL :
case LIBIRC_RFC_ERR_UNKNOWNMODE :
case LIBIRC_RFC_ERR_INVITEONLYCHAN :
case LIBIRC_RFC_ERR_BANNEDFROMCHAN :
case LIBIRC_RFC_ERR_BADCHANNELKEY :
case LIBIRC_RFC_ERR_BADCHANMASK :
case LIBIRC_RFC_ERR_NOCHANMODES :
case LIBIRC_RFC_ERR_BANLISTFULL :
case LIBIRC_RFC_ERR_NOPRIVILEGES :
case LIBIRC_RFC_ERR_CHANOPRIVSNEEDED :
case LIBIRC_RFC_ERR_CANTKILLSERVER :
case LIBIRC_RFC_ERR_RESTRICTED :
case LIBIRC_RFC_ERR_UNIQOPPRIVSNEEDED :
case LIBIRC_RFC_ERR_NOOPERHOST :
case LIBIRC_RFC_ERR_UMODEUNKNOWNFLAG :
case LIBIRC_RFC_ERR_USERSDONTMATCH :
errorMsg = tr("The IRC server reported an error:") + " " + QString::number(errorCode);
break;
}
// if (errorMsg.size())
// myLobby->textBrowser_ChatDisplay->append(errorMsg);
}
@@ -41,11 +41,16 @@ public slots:
void connected(QString server);
void selfJoined(QString ownName, QString channel);
void playerJoined(QString playerName);
void playerChanged(QString oldNick, QString newNick);
void playerKicked(QString nickName, QString byWhom, QString reason);
void playerLeft(QString playerName);
void displayMessage(QString playerName, QString msg);
void checkInputLength(QString);
void clearChat();
void chatError(int errorCode);
void chatServerError(int errorCode);
private:
gameLobbyDialogImpl *myLobby;
+5 -1
View File
@@ -142,7 +142,11 @@ void GuiWrapper::SignalNetServerError(int errorID, int osErrorID) { myW->signalN
void GuiWrapper::SignalIrcConnect(const string &server) { myW->signalIrcConnect(QString::fromUtf8(server.c_str())); }
void GuiWrapper::SignalIrcSelfJoined(const string &nickName, const string &channel) { myW->signalIrcSelfJoined(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(channel.c_str())); }
void GuiWrapper::SignalIrcPlayerJoined(const std::string &nickName) { myW->signalIrcPlayerJoined(QString::fromUtf8(nickName.c_str())); }
void GuiWrapper::SignalIrcPlayerJoined(const string &nickName) { myW->signalIrcPlayerJoined(QString::fromUtf8(nickName.c_str())); }
void GuiWrapper::SignalIrcPlayerChanged(const string &oldNick, const string &newNick) { myW->signalIrcPlayerChanged(QString::fromUtf8(oldNick.c_str()), QString::fromUtf8(newNick.c_str())); }
void GuiWrapper::SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason) { myW->signalIrcPlayerKicked(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(byWhom.c_str()), QString::fromUtf8(reason.c_str())); }
void GuiWrapper::SignalIrcPlayerLeft(const std::string &nickName) { myW->signalIrcPlayerLeft(QString::fromUtf8(nickName.c_str())); }
void GuiWrapper::SignalIrcChatMsg(const std::string &nickName, const std::string &msg) { myW->signalIrcChatMessage(QString::fromUtf8(nickName.c_str()), QString::fromUtf8(msg.c_str())); }
void GuiWrapper::SignalIrcError(int errorCode) { myW->signalIrcError(errorCode); }
void GuiWrapper::SignalIrcServerError(int errorCode) {myW->signalIrcServerError(errorCode); }
+4
View File
@@ -122,8 +122,12 @@ public:
void SignalIrcConnect(const std::string &server);
void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel);
void SignalIrcPlayerJoined(const std::string &nickName);
void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick);
void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason);
void SignalIrcPlayerLeft(const std::string &nickName);
void SignalIrcChatMsg(const std::string &nickName, const std::string &msg);
void SignalIrcError(int errorCode);
void SignalIrcServerError(int errorCode);
private:
+10 -5
View File
@@ -30,6 +30,7 @@
#include "changehumanplayernamedialogimpl.h"
#include "changecompleteblindsdialogimpl.h"
#include "gamelobbydialogimpl.h"
#include "lobbychat.h"
#include "startsplash.h"
#include "mycardspixmaplabel.h"
@@ -678,11 +679,15 @@ mainWindowImpl::mainWindowImpl(ConfigFile *c, QMainWindow *parent)
connect(this, SIGNAL(signalNetServerError(int, int)), this, SLOT(networkError(int, int)));
connect(this, SIGNAL(signalNetClientGameStart(boost::shared_ptr<Game>)), this, SLOT(networkStart(boost::shared_ptr<Game>)));
connect(this, SIGNAL(signalIrcConnect(QString)), myGameLobbyDialog, SIGNAL(signalChatConnect(QString)));
connect(this, SIGNAL(signalIrcSelfJoined(QString, QString)), myGameLobbyDialog, SIGNAL(signalChatSelfJoined(QString, QString)));
connect(this, SIGNAL(signalIrcPlayerJoined(QString)), myGameLobbyDialog, SIGNAL(signalChatPlayerJoined(QString)));
connect(this, SIGNAL(signalIrcPlayerLeft(QString)), myGameLobbyDialog, SIGNAL(signalChatPlayerLeft(QString)));
connect(this, SIGNAL(signalIrcChatMessage(QString, QString)), myGameLobbyDialog, SIGNAL(signalChatMessage(QString, QString)));
connect(this, SIGNAL(signalIrcConnect(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(connected(QString)));
connect(this, SIGNAL(signalIrcSelfJoined(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(selfJoined(QString, QString)));
connect(this, SIGNAL(signalIrcPlayerJoined(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerJoined(QString)));
connect(this, SIGNAL(signalIrcPlayerChanged(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerChanged(QString, QString)));
connect(this, SIGNAL(signalIrcPlayerKicked(QString, QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerKicked(QString, QString, QString)));
connect(this, SIGNAL(signalIrcPlayerLeft(QString)), myGameLobbyDialog->getLobbyChat(), SLOT(playerLeft(QString)));
connect(this, SIGNAL(signalIrcChatMessage(QString, QString)), myGameLobbyDialog->getLobbyChat(), SLOT(displayMessage(QString, QString)));
connect(this, SIGNAL(signalIrcError(int)), myGameLobbyDialog->getLobbyChat(), SLOT(chatError(int)));
connect(this, SIGNAL(signalIrcServerError(int)), myGameLobbyDialog->getLobbyChat(), SLOT(chatServerError(int)));
//Sound
mySDLPlayer = new SDLPlayer(myConfig);
+4
View File
@@ -142,8 +142,12 @@ signals:
void signalIrcConnect(QString server);
void signalIrcSelfJoined(QString nickName, QString channel);
void signalIrcPlayerJoined(QString nickName);
void signalIrcPlayerChanged(QString oldNick, QString newNick);
void signalIrcPlayerKicked(QString nickName, QString byWhom, QString reason);
void signalIrcPlayerLeft(QString nickName);
void signalIrcChatMessage(QString nickName, QString msg);
void signalIrcError(int errorCode);
void signalIrcServerError(int errorCode);
public slots:
+132 -6
View File
@@ -20,6 +20,7 @@
#include <net/ircthread.h>
#include <net/socket_helper.h>
#include <net/socket_msg.h>
#include <libircclient.h>
#include <sstream>
#include <cctype>
@@ -78,6 +79,13 @@ void irc_notify_player_list(irc_session_t *session, const char *players)
}
}
void irc_handle_server_error(irc_session_t *session, unsigned irc_error_code)
{
IrcContext *context = (IrcContext *) irc_get_ctx(session);
context->ircThread.GetCallback().SignalIrcServerError(irc_error_code);
}
void
irc_event_connect(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
{
@@ -99,6 +107,36 @@ irc_event_join(irc_session_t *session, const char *irc_event, const char *origin
context->ircThread.GetCallback().SignalIrcPlayerJoined(origin);
}
void
irc_event_nick(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
{
// someone changed his/her nick
IrcContext *context = (IrcContext *) irc_get_ctx(session);
if (context->nick != params[0]) // only act if this was not an auto-rename
{
if (context->nick == origin)
context->nick = params[0];
context->ircThread.GetCallback().SignalIrcPlayerChanged(origin, params[0]);
}
}
void
irc_event_kick(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
{
// someone got kicked
IrcContext *context = (IrcContext *) irc_get_ctx(session);
string byWhom(origin);
string who;
string reason;
if (count >= 2)
who = params[1];
if (count >= 3)
reason = params[2];
context->ircThread.GetCallback().SignalIrcPlayerKicked(who, byWhom, reason);
}
void
irc_event_leave(irc_session_t *session, const char *irc_event, const char *origin, const char **params, unsigned count)
{
@@ -136,6 +174,58 @@ irc_event_numeric(irc_session_t * session, unsigned irc_event, const char *origi
if (count >= 4)
irc_notify_player_list(session, params[3]);
break;
case LIBIRC_RFC_ERR_NOSUCHNICK :
case LIBIRC_RFC_ERR_NOSUCHCHANNEL :
case LIBIRC_RFC_ERR_CANNOTSENDTOCHAN :
case LIBIRC_RFC_ERR_TOOMANYCHANNELS :
case LIBIRC_RFC_ERR_WASNOSUCHNICK :
case LIBIRC_RFC_ERR_TOOMANYTARGETS :
case LIBIRC_RFC_ERR_NOSUCHSERVICE :
case LIBIRC_RFC_ERR_NOORIGIN :
case LIBIRC_RFC_ERR_NORECIPIENT :
case LIBIRC_RFC_ERR_NOTEXTTOSEND :
case LIBIRC_RFC_ERR_NOTOPLEVEL :
case LIBIRC_RFC_ERR_WILDTOPLEVEL :
case LIBIRC_RFC_ERR_BADMASK :
case LIBIRC_RFC_ERR_UNKNOWNCOMMAND :
case LIBIRC_RFC_ERR_NOMOTD :
case LIBIRC_RFC_ERR_NOADMININFO :
case LIBIRC_RFC_ERR_FILEERROR :
case LIBIRC_RFC_ERR_NONICKNAMEGIVEN :
case LIBIRC_RFC_ERR_ERRONEUSNICKNAME :
case LIBIRC_RFC_ERR_UNAVAILRESOURCE :
case LIBIRC_RFC_ERR_USERNOTINCHANNEL :
case LIBIRC_RFC_ERR_NOTONCHANNEL :
case LIBIRC_RFC_ERR_USERONCHANNEL :
case LIBIRC_RFC_ERR_NOLOGIN :
case LIBIRC_RFC_ERR_SUMMONDISABLED :
case LIBIRC_RFC_ERR_USERSDISABLED :
case LIBIRC_RFC_ERR_NOTREGISTERED :
case LIBIRC_RFC_ERR_NEEDMOREPARAMS :
case LIBIRC_RFC_ERR_ALREADYREGISTRED :
case LIBIRC_RFC_ERR_NOPERMFORHOST :
case LIBIRC_RFC_ERR_PASSWDMISMATCH :
case LIBIRC_RFC_ERR_YOUREBANNEDCREEP :
case LIBIRC_RFC_ERR_YOUWILLBEBANNED :
case LIBIRC_RFC_ERR_KEYSET :
case LIBIRC_RFC_ERR_CHANNELISFULL :
case LIBIRC_RFC_ERR_UNKNOWNMODE :
case LIBIRC_RFC_ERR_INVITEONLYCHAN :
case LIBIRC_RFC_ERR_BANNEDFROMCHAN :
case LIBIRC_RFC_ERR_BADCHANNELKEY :
case LIBIRC_RFC_ERR_BADCHANMASK :
case LIBIRC_RFC_ERR_NOCHANMODES :
case LIBIRC_RFC_ERR_BANLISTFULL :
case LIBIRC_RFC_ERR_NOPRIVILEGES :
case LIBIRC_RFC_ERR_CHANOPRIVSNEEDED :
case LIBIRC_RFC_ERR_CANTKILLSERVER :
case LIBIRC_RFC_ERR_RESTRICTED :
case LIBIRC_RFC_ERR_UNIQOPPRIVSNEEDED :
case LIBIRC_RFC_ERR_NOOPERHOST :
case LIBIRC_RFC_ERR_UMODEUNKNOWNFLAG :
case LIBIRC_RFC_ERR_USERSDONTMATCH :
irc_handle_server_error(session, irc_event);
break;
}
}
@@ -147,6 +237,9 @@ IrcThread::IrcThread(IrcCallback &callback)
IrcThread::~IrcThread()
{
IrcContext &context = GetContext();
if (context.session)
irc_destroy_session(context.session);
}
void
@@ -168,12 +261,12 @@ IrcThread::Init(const std::string &serverAddress, unsigned serverPort, bool ipv6
callbacks.event_connect = irc_event_connect;
callbacks.event_join = irc_event_join;
//callbacks.event_nick
callbacks.event_nick = irc_event_nick;
callbacks.event_quit = irc_event_leave;
callbacks.event_part = irc_event_leave;
//callbacks.event_mode
//callbacks.event_topic
//callbacks.event_kick
callbacks.event_kick = irc_event_kick;
callbacks.event_channel = irc_event_channel;
//callbacks.event_privmsg
//callbacks.event_notice
@@ -219,7 +312,9 @@ IrcThread::Main()
irc_session_t *s = context.session;
if (s)
{
if (irc_connect(s, context.serverAddress.c_str(), context.serverPort, 0, context.nick.c_str(), 0, 0) == 0)
if (irc_connect(s, context.serverAddress.c_str(), context.serverPort, 0, context.nick.c_str(), 0, 0) != 0)
HandleIrcError(irc_errno(s));
else
{
// Main loop.
while (irc_is_connected(s))
@@ -251,21 +346,52 @@ IrcThread::Main()
int selectResult = select(maxfd + 1, &readSet, &writeSet, 0, &timeout);
if (!IS_VALID_SELECT(selectResult))
{
//todo
GetCallback().SignalIrcError(ERR_IRC_SELECT_FAILED);
break;
}
if (irc_process_select_descriptors(s, &readSet, &writeSet) != 0)
{
//todo
HandleIrcError(irc_errno(s));
break;
}
}
}
irc_destroy_session(s);
}
}
void
IrcThread::HandleIrcError(int errorCode)
{
int internalErrorCode = ERR_IRC_INTERNAL;
switch(errorCode)
{
case LIBIRC_ERR_RESOLV:
case LIBIRC_ERR_SOCKET:
case LIBIRC_ERR_CONNECT:
internalErrorCode = ERR_IRC_CONNECT_FAILED;
break;
case LIBIRC_ERR_INVAL:
case LIBIRC_ERR_STATE:
internalErrorCode = ERR_IRC_INVALID_PARAM;
break;
case LIBIRC_ERR_CLOSED:
case LIBIRC_ERR_TERMINATED:
internalErrorCode = ERR_IRC_TERMINATED;
break;
case LIBIRC_ERR_READ:
internalErrorCode = ERR_IRC_RECV_FAILED;
break;
case LIBIRC_ERR_WRITE:
internalErrorCode = ERR_IRC_SEND_FAILED;
break;
case LIBIRC_ERR_TIMEOUT:
internalErrorCode = ERR_IRC_TIMEOUT;
break;
}
GetCallback().SignalIrcError(internalErrorCode);
}
const IrcContext &
IrcThread::GetContext() const
{
+4
View File
@@ -31,8 +31,12 @@ public:
virtual void SignalIrcConnect(const std::string &server) = 0;
virtual void SignalIrcSelfJoined(const std::string &nickName, const std::string &channel) = 0;
virtual void SignalIrcPlayerJoined(const std::string &nickName) = 0;
virtual void SignalIrcPlayerChanged(const std::string &oldNick, const std::string &newNick) = 0;
virtual void SignalIrcPlayerKicked(const std::string &nickName, const std::string &byWhom, const std::string &reason) = 0;
virtual void SignalIrcPlayerLeft(const std::string &nickName) = 0;
virtual void SignalIrcChatMsg(const std::string &nickName, const std::string &msg) = 0;
virtual void SignalIrcError(int errorCode) = 0;
virtual void SignalIrcServerError(int errorCode) = 0;
};
#endif
+2
View File
@@ -49,6 +49,8 @@ protected:
// Main function of the thread.
virtual void Main();
void HandleIrcError(int errorCode);
const IrcContext &GetContext() const;
IrcContext &GetContext();
+9
View File
@@ -58,6 +58,15 @@
#define ERR_NET_PLAYER_KICKED 114
#define ERR_NET_INVALID_PLAYER_COUNT 115
#define ERR_IRC_INTERNAL 151
#define ERR_IRC_CONNECT_FAILED 152
#define ERR_IRC_TERMINATED 153
#define ERR_IRC_SELECT_FAILED 154
#define ERR_IRC_RECV_FAILED 155
#define ERR_IRC_SEND_FAILED 156
#define ERR_IRC_INVALID_PARAM 157
#define ERR_IRC_TIMEOUT 158
// Notifications - removed from game
#define NTF_NET_INTERNAL 201
#define NTF_NET_REMOVED_ON_REQUEST 202