Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 6
0
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()));
}