SparrowBot/socketirc.cpp
2015-05-21 15:26:18 +02:00

62 lines
1.3 KiB
C++

#include "socketirc.h"
#include <iostream>
SocketIRC::SocketIRC() : server("irc.freenode.net"), port(6667), isConnected(false)
{
connect(&sock, SIGNAL(readyRead()), this, SLOT(readMsg()));
}
void SocketIRC::setServer(std::string server_)
{
server = server_;
}
void SocketIRC::setPort(int port_)
{
port = port_;
}
void SocketIRC::sendMsg(QString msg)
{
if(isConnected)
{
sock.write(msg.toStdString().c_str());
sock.flush();
std::cout << msg.toStdString();
}
}
void SocketIRC::setConnected(int c)
{
if(c != isConnected)
{
if(isConnected)
{
sock.close();
isConnected = false;
emit stateChanged(isConnected);
}
else
{
sock.connectToHost(QString(server.c_str()), quint16(port));
if(sock.waitForConnected(5000))
isConnected = true;
else
std::cerr << "failed to connect : " << sock.errorString().toStdString() << std::endl;
emit stateChanged(isConnected);
}
}
}
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));
}
}