void ExtPlaneConnection::socketError(QAbstractSocket::SocketError err) { INFO << "Socket error:" << errorString(); server_ok = false; emit connectionMessage(errorString() + " : " + peerName() + ":" + QString::number(peerPort())); reconnectTimer.setInterval(5000); reconnectTimer.start(); }
LogWindow::LogWindow() : QWidget( 0, Qt::Tool|Qt::WindowStaysOnTopHint ) { setWindowTitle( tr("Qtopia Sync Agent Messages") ); DesktopSettings settings( "logwindow" ); QRect r = settings.value( "geometry" ).toRect(); if ( r.isValid() ) setGeometry( r ); textView = new QTextEdit; textView->setReadOnly( true ); textView->setLineWrapMode( QTextEdit::NoWrap ); textView->clear(); QHBoxLayout *hbox = new QHBoxLayout( this ); hbox->setMargin( 0 ); hbox->setSpacing( 0 ); hbox->addWidget( textView ); QCopChannel *status = new QCopChannel( "QD/Status", this ); connect( status, SIGNAL(received(QString,QByteArray)), this, SLOT(statusMessage(QString,QByteArray)) ); QCopChannel *sys = new QCopChannel( "QD/Connection", this ); connect( sys, SIGNAL(received(QString,QByteArray)), this, SLOT(connectionMessage(QString,QByteArray)) ); }
void ExtPlaneConnection::readClient() { while(canReadLine()) { QByteArray lineBA = readLine(); QString line = QString(lineBA).trimmed(); //DEBUG << "Server says: " << line; if(!server_ok) { // Waiting for handshake.. if(line=="EXTPLANE 1") { server_ok = true; emit connectionMessage(""); setUpdateInterval(updateInterval); // Sub all refs foreach(ClientDataRef *ref, dataRefs) subRef(ref); } return; } else { // Handle updates QStringList cmd = line.split(" ", QString::SkipEmptyParts); if(cmd.size()==3) { ClientDataRef *ref = dataRefs.value(cmd.value(1)); if(ref) { if (cmd.value(0)=="ufa" || cmd.value(0)=="uia"){ // Array dataref QString arrayString = cmd.value(2); Q_ASSERT(arrayString[0]=='[' && arrayString[arrayString.length()-1]==']'); arrayString = arrayString.mid(1, arrayString.length()-2); QStringList arrayValues = arrayString.split(','); ref->updateValue(arrayValues); } else if ((cmd.value(0)=="uf")||(cmd.value(0)=="ui")||(cmd.value(0)=="ud")) { // Single value dataref ref->updateValue(cmd.value(2)); } else if (cmd.value(0)=="ub") { // Data dataref ref->updateValue(QByteArray::fromBase64(cmd.value(2).toUtf8())); } else { INFO << "Unsupported ref type " << cmd.value(0); } } else { INFO << "Ref not subscribed " << cmd.value(2); } } } } }
void ExtPlaneConnection::socketConnected() { emit connectionMessage("Connected to ExtPlane, waiting for handshake"); reconnectTimer.stop(); }
void ExtPlaneConnection::tryReconnect() { emit connectionMessage(QString("Connecting to ExtPlane at %1:%2..").arg(_host).arg(_port)); reconnectTimer.stop(); connectToHost(_host, _port); }
void SimulatedExtPlaneConnection::connectTo(QString host, unsigned int port) { _host = host; _port = port; server_ok = true; emit connectionMessage("Connected to ExtPlane (simulated)"); }