23 #include "ircclient.h" 26 IRCClient::IRCClient()
28 recvTimer.setSingleShot(
true);
31 QObject::connect(&socket, SIGNAL(readyRead()),
this, SLOT(receiveSocketDataDelayed()));
32 QObject::connect(&recvTimer, SIGNAL(timeout()),
this, SLOT(receiveSocketData()));
35 IRCClient::~IRCClient()
40 void IRCClient::connect(
const QString& address,
unsigned short port)
43 this->hostName = address;
45 emit
infoMessage(tr(
"IRC: Connecting: %1:%2").arg(this->hostName).arg(this->port));
46 socket.connectToHost(address, port);
51 pAdapter->pSocket = &socket;
52 pAdapter->connect(&socket, SIGNAL( connected() ), SLOT( connected() ));
53 pAdapter->connect(&socket, SIGNAL( disconnected() ), SLOT( disconnected() ));
54 pAdapter->connect(&socket, SIGNAL( error(QAbstractSocket::SocketError) ), SLOT( errorReceived(QAbstractSocket::SocketError) ));
58 void IRCClient::disconnect()
66 bool IRCClient::isConnected()
const 68 return socket.state() == QTcpSocket::ConnectedState;
71 void IRCClient::receiveSocketData()
73 while (socket.canReadLine())
75 QByteArray socketData = socket.readLine();
76 QString responseLine = QString::fromUtf8(socketData.constData(), socketData.size());
77 emit ircServerResponse(responseLine);
81 void IRCClient::receiveSocketDataDelayed()
83 if (!recvTimer.isActive())
89 bool IRCClient::sendMessage(
const QString& message)
96 QByteArray messageContent = message.toUtf8();
97 messageContent.append(
"\r\n");
99 qint64 numBytesWritten = socket.write(messageContent);
102 return numBytesWritten == messageContent.size();
105 void IRCClient::setFakeRecvLag(
int lagMs)
107 recvTimer.setInterval(lagMs);
void infoMessage(const QString &message)
These are the messages that IRCClient class sends to inform the upper layers of progress.