connect(this->sendTextEditor,SIGNAL(invalidLink(const QString &)),SLOT(invalidLink(const QString &)));
connect(this->sendTextEditor,SIGNAL(sendTriggered()),this->sendButton,SLOT(click()));
- connect(this->mainServer,SIGNAL(pending(const tcpSocket &)),SLOT(tcpserver_pending(const tcpSocket &)));
+ connect(this->mainServer,SIGNAL(pending(threadedTcpSocket &)),
+ SLOT(tcpserver_pending(threadedTcpSocket &)));
}
mainWindow::~mainWindow(){}
void mainWindow::closeEvent(QCloseEvent *event){
}
void mainWindow::showEvent(QShowEvent *event){
if(rev==0)
- this->status->showMessage("<font color=\"#ff0000\">Don't forget almost all features are not implemented!</font>",default_status_interval);
+ this->status->showMessage("Don't forget almost all features are not implemented!",default_status_interval);
event->accept();
}
#pragma omp parallel for
#endif
for(int index=0;index<addressList.size();index++){
- tcpSocket *client=new tcpSocket(this->setting.name(),default_buffer_size,this);
- connect(client,SIGNAL(connected()),SLOT(tcpclient_connected()));
+ threadedTcpSocket *client=new threadedTcpSocket(
+ addressList[index],this->setting.name(),default_buffer_size,this);
connect(client,SIGNAL(error(const QAbstractSocket::SocketError &)),SLOT(tcpclient_error(const QAbstractSocket::SocketError &)));
connect(client,SIGNAL(sentData()),SLOT(sentData()));
- client->connectToHost(addressList[index].first,addressList[index].second);
+ (*client)<<this->sendTextEditor->html();
}
}
void mainWindow::tcpclient_error(const QAbstractSocket::SocketError &error){
Q_UNUSED(error);
- tcpSocket *client=qobject_cast<tcpSocket *>(this->sender());
+ threadedTcpSocket *client=qobject_cast<threadedTcpSocket *>(this->sender());
#ifdef DEBUG
qDebug()<<"Error:"<<client->errorString();
#endif
- client->close();
-}
-
-void mainWindow::tcpclient_connected(){
- tcpSocket *client=qobject_cast<tcpSocket *>(this->sender());
- (*client)<<this->sendTextEditor->html();
- client->disconnectFromHost();
- client->close();
+ client->exit(1);
}
void mainWindow::on_sendFileAction_triggered(){
void mainWindow::openMember(const QString &file){
/*
Does QFileDialog have a bug??
- If you select file by double clicking, fileSelected signal will be emitted twice.
+ Selecting file by double clicking, fileSelected signal will be emitted twice.
*/
if(this->sender()!=NULL&&this->sender()==this->beforesender) return;
this->beforesender=this->sender();
}
settings mainWindow::app_setting() const{return this->setting;}
-//Implementations for main server.
-bool mainWindow::tcpserver_pending(const tcpSocket &socket){
+//Main server
+bool mainWindow::tcpserver_pending(threadedTcpSocket &socket){
#ifdef DEBUG
- qDebug()<<"Pending:"<<socket.peerAddress().toString()<<" Port:"<<socket.peerPort();
+ qDebug()<<"Pending:"<<socket.peerAddr().first.toString()<<" Port:"<<socket.peerAddr().second;
#endif
- if(this->memberList->isInMember(AddressAndPort(socket.peerAddress(),0),true)<0) return false;
+ if(this->memberList->isInMember(socket.peerAddr(),true)<0) return false;
connect(&socket,
SIGNAL(msg_received(const QString &)),
SLOT(tcpserver_msg_received(const QString &)));
}
void mainWindow::tcpserver_error(const QAbstractSocket::SocketError &error){
Q_UNUSED(error);
- tcpSocket *sender=qobject_cast<tcpSocket *>(this->sender());
+ threadedTcpSocket *sender=qobject_cast<threadedTcpSocket *>(this->sender());
#ifdef DEBUG
qDebug()<<"Receive aborted:"<<sender->errorString();
#endif
- sender->close();
+ sender->exit(1);
}
void mainWindow::tcpserver_msg_received(const QString &msg){
- tcpSocket *sender=qobject_cast<tcpSocket *>(this->sender());
- this->receiveText->append(sender->header_data().senderName()+"("+this->memberList->name(AddressAndPort(sender->peerAddress(),0),true)+", "+sender->peerAddress().toString()+")"+tr(" says:"));
+ threadedTcpSocket *sender=qobject_cast<threadedTcpSocket *>(this->sender());
+ this->receiveText->append(sender->head_data().senderName()+
+ "("+this->memberList->name(AddressAndPort(sender->peerAddr().first,0),true)+", "+sender->peerAddr().first.toString()+")"+tr(" says:"));
this->receiveText->append(msg);
this->receiveText->append("<br />");
+ sender->quit();
}