void WebSocketsClient::sendBinMessage(ConstBin msg) { Synchronized<FastLockR> _(lock); if (stream != null) try { Super::sendBinMessage(msg,true); stream->flush(); return; } catch (NetworkException &) { onReconnect().thenCall(Action::create(this,&WebSocketsClient::sendBinMessage, StringB(msg))); lostConnection(naturalNull); } else { onReconnect().thenCall(Action::create(this,&WebSocketsClient::sendBinMessage, StringB(msg))); } }
/*! From ConnectionIf. */ void WlanConnection::setConnectAs(ConnectAs connectAs) { qDebug() << "WlanConnection::setConnectAs():" << connectAs; ConnectionIf::setConnectAs(connectAs); onReconnect(); if (connectAs == Server && !mServer) { delete mDiscoveryMgr; mDiscoveryMgr = 0; delete mClient; mClient = 0; startServer(); } else if (connectAs == Client && !mClient) { delete mServer; mServer = 0; startDiscoveryMgr(); startClient(); } else if (connectAs == DontCare) { startDiscoveryMgr(); startServer(); startClient(); } }
/*! Starts connection. */ bool WlanConnection::connect() { onReconnect(); if (mServer) { WlanNetworkMgr& mgr = Network::networkManager(); mServer->setMaxConnections(mMaxConnections); mServer->setState(mgr.state()); mServer->setIp(mgr.ip()); } if (mConnectAs == Server && mServer) { if (mServer->startServer(mServerPort, mBroadcastPort)) { setStatus(Connecting); return true; } } else if (mConnectAs == Client && mDiscoveryMgr && mClient) { if (mDiscoveryMgr->startDiscovery(mBroadcastPort)) { setStatus(Discovering); return true; } } else if (mConnectAs == DontCare && mDiscoveryMgr && mClient && mServer) { bool serverOk = mServer->startServer(mServerPort, mBroadcastPort); bool discoveryOk = mDiscoveryMgr->startDiscovery(mBroadcastPort); if (serverOk && discoveryOk) { setStatus(Connecting); return true; } } return false; }
/*! Creates and connects server and its signals */ void WlanConnection::startServer() { if (!mServer) { mServer = new WlanServer(this); QObject::connect(mServer, SIGNAL(read(QByteArray)), this, SLOT(onRead(QByteArray))); QObject::connect(mServer, SIGNAL(clientConnected(QString)), this, SLOT(onClientConnected(QString))); QObject::connect(mServer, SIGNAL(clientDisconnected(int)), this, SLOT(onClientDisconnected(int))); QObject::connect(mServer, SIGNAL(reconnectToNetwork()), this, SLOT(onReconnect())); QObject::connect(mServer, SIGNAL(socketError(int)), this, SLOT(onSocketError(int))); WlanNetworkMgr& mgr = Network::networkManager(); QObject::connect(&mgr, SIGNAL(stateChanged(QNetworkSession::State)), mServer, SLOT(onNetworkStateChanged(QNetworkSession::State))); QObject::connect(&mgr, SIGNAL(ipChanged(QString)), mServer, SLOT(onIpChanged(QString))); }
void ARTSPConnection::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatConnect: onConnect(msg); break; case kWhatDisconnect: onDisconnect(msg); break; case kWhatReconnect: onReconnect(msg); break; case kWhatCompleteConnection: onCompleteConnection(msg); break; case kWhatSendRequest: onSendRequest(msg); break; case kWhatReceiveResponse: onReceiveResponse(); break; case kWhatObserveBinaryData: { CHECK(msg->findMessage("reply", &mObserveBinaryMessage)); break; } default: TRESPASS(); break; } }
ConnectingWidget::ConnectingWidget(QWidget *parent, const QString &text, const QString &reconnect) : QWidget(parent), _shadow(st::boxShadow), _reconnect(this, QString()) { set(text, reconnect); connect(&_reconnect, SIGNAL(clicked()), this, SLOT(onReconnect())); }