SparrowBot/socketirc.cpp
2015-05-26 17:18:52 +02:00

59 lines
1.2 KiB
C++

#include "socketirc.h"
#include <iostream>
SocketIRC::SocketIRC() : server("irc.freenode.net"), port(6667), isConnected(false)
{
connect(&sock, SIGNAL(readyRead()), this, SLOT(readMsg()));
connect(&sock, SIGNAL(disconnected()), this, SLOT(onDisconnect()));
}
void SocketIRC::setServer(std::string server_)
{
server = server_;
}
void SocketIRC::setPort(int port_)
{
port = port_;
}
void SocketIRC::sendMsg(QString msg)
{
msg.append("\r\n");
sock.write(msg.toStdString().c_str());
sock.flush();
}
void SocketIRC::connectToServer(QCoreApplication* app_)
{
app = app_;
sock.connectToHost(QString(server.c_str()), quint16(port));
if(!sock.waitForConnected(3000))
{
std::cerr << "failed to connect : " << sock.errorString().toStdString() << std::endl;
if(app != NULL)
app->exit();
else
exit(0);
}
app->exec();
}
void SocketIRC::readMsg()
{
char buffer[512];
while(sock.canReadLine())
{
int numbytes = sock.readLine(buffer, 512);
buffer[numbytes - 2] = '\0';
std::cout << buffer << std::endl;
emit receivedMsg(QString(buffer));
}
}
void SocketIRC::onDisconnect()
{
app->exit();
}