コード例 #1
0
void NetServerCom::startCommunication()
{
    socket = server->nextPendingConnection();

    connect(socket, SIGNAL(disconnected()), this, SLOT(closeSocket()));

    while (comActive && socket->isOpen())
    {
        //read queued commands and send to host
        if (writeCmd.size()>0)
        {
            NetCommand cmd = writeCmd.dequeue();
            QString m = cmd.toString().append("\n");
            socket->write(m.toAscii());
            socket->flush();
            cout << "queued cmd sent: " << cmd.toString().toStdString() << endl;
        }

        //read command from host
        if (socket->waitForReadyRead(100))
        {
            QByteArray data = socket->readAll();
            NetCommand cmd = NetCommand(QString(data.constData()));
            emit commandReceived(cmd);
        }
    }


    socket->disconnect();
    delete socket;
    emit finished();
    emit lostConnection(comActive);
}
コード例 #2
0
void DPX_Service::from_css( BasicProtocol *p)
{
	USE_PROTOCOL_NAMESPACE;
	ACE_Auto_Ptr<BasicProtocol> p_pro( p);

	NETCMD_FUN_MAP fun =0;
	if( p->iid_ == GAME_CHRLOAD_REQ)
	{
		fun =boost::bind( &DPXSvr::css_chrload_req, DPXMODULE, _1, _2);
	}
	else if( p->iid_ == APP_BUFFCHANGE_NTF)
	{
		fun =boost::bind( &DPXSvr::css_buffchange_ntf, DPXMODULE, _1, _2);
	}
	else if( p->iid_ == DB_POSROTSAVE_NTF)
	{
		fun =boost::bind( &DPXSvr::css_posrotsave_ntf, DPXMODULE, _1, _2);
	}
	else if( p->iid_ == DB_PLAYERBASEINFO_SAVE)
	{
		fun =boost::bind( &DPXSvr::css_playerbaseinfo_sav, DPXMODULE, _1, _2);
	}

	if( fun)
	{
		NetCommand* pcmd =TASKCMD_NEW NetCommand( p_pro.release(), fun, true);
		DPXMODULE->regist_netcmd( pcmd);
	}
}
コード例 #3
0
ファイル: CTS_Service.cpp プロジェクト: roseboych/mmorpg-xfw
bool CTS_Service::recv_msg( BasicProtocol* pro)
{
	USE_PROTOCOL_NAMESPACE;
	//MODULE_LOG_DEBUG((MODULE_TEMP, "receive protocol id:%d", protocol->iid_));
	ACE_Auto_Ptr<BasicProtocol> a_ps( pro);

	if( !initialized()) return false;

	NETCMD_FUN_MAP fun =0;

	if( pro->iid_ == SVR_REGIST_ACK)
	{
		//注册回复
		Pro_SvrRegist_ack* pack =dynamic_cast<Pro_SvrRegist_ack*>(pro);
		if( pack->result_ == 1)
		{
			this->close_service();
		}
		else
		{
			SystemCommand<CTS_Service>* pcmd =
				TASKCMD_NEW SystemCommand<CTS_Service>( boost::bind( &BasicModule::fin_registservice, CSSMODULE, this));

			CSSMODULE->regist_syscmd( pcmd);
		}
	}
	else if( pro->iid_ == CONTROLLER_PROFILER_FILTERCTRL)
	{
		fun =boost::bind( &CSSSvr::controller_profiler_filterctrl, CSSMODULE, _1, _2);
	}
	else if( pro->iid_ == CONTROLLER_PROFILER_ANALYSISCTRL)
	{
		fun =boost::bind( &CSSSvr::controller_profiler_analysisctrl, CSSMODULE, _1, _2);
	}
	else
	{
		fun =boost::bind( &CSSSvr::cts_netadapter, CSSMODULE, _1, _2);
	}

	if( fun)
	{
		NetCommand* pcmd =TASKCMD_NEW NetCommand( a_ps.release(), fun, true);
		CSSMODULE->regist_netcmd( pcmd);
	}

	return true;
}
コード例 #4
0
ファイル: switcher.c プロジェクト: Kafay/vlc
/*****************************************************************************
 * Send: Process an input packet
 *****************************************************************************/
static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
                 block_t *p_buffer )
{
    sout_stream_sys_t *p_sys = p_stream->p_sys;

    if ( !id->id )
    {
        block_Release( p_buffer );
        return VLC_EGENERIC;
    }

    if ( !id->b_switcher_video && !id->b_switcher_audio )
    {
        return p_sys->p_out->pf_send( p_sys->p_out, id->id, p_buffer );
    }

    block_ChainAppend( &id->p_queued, p_buffer );

    if ( id->b_switcher_video )
    {
        /* Check for commands for every video frame. */
        NetCommand( p_stream );

        while ( id->p_queued != NULL )
        {
            mtime_t i_dts = 0;
            int i;

            if ( p_sys->i_old_cmd != p_sys->i_cmd )
            {
                i_dts = VideoCommand( p_stream, id );
            }

            i_dts = Process( p_stream, id, i_dts );

            for ( i = 0; i < MAX_AUDIO; i++ )
            {
                if ( p_sys->pp_audio_ids[i] != NULL )
                    Process( p_stream, p_sys->pp_audio_ids[i], i_dts );
            }
        }
    }

    return VLC_SUCCESS;
}
コード例 #5
0
void NetClientCom::startCommunication()
{
    bool autoReconnect = true;

    // Connect to Host
    socket=new QTcpSocket;
    socket->connectToHost(host, port);

    connect(socket, SIGNAL(disconnected()), this, SLOT(closeSocket()));

    if (!socket->waitForConnected(5000)) {
        cout << "Error: Could not connect to " << host.toStdString() << ":" << port << endl;
        emit couldNotConnect();
        return;
    }

    cout << "Connected to " << host.toStdString() << ":" << port << endl;
    isconnected=true;

    int i=0;
    while (comActive && socket->isOpen()) {

        /*if (autoReconnect && (!socket->isOpen()))
        {
            socket->connectToHost(host, port);
            cout << "RECONNECTING..." << endl;

            if (!socket->waitForConnected())
            {
                isconnected=false;
                comActive=false;
                cout << "Error: Could not reconnect to " << host.toStdString() << ":" << port << endl;
            }
        }*/

        //read queued commands and send to host
        if (writeCmd.size()>0)
        {
            NetCommand cmd = writeCmd.dequeue();
            QString m = cmd.toString().append("\n");
            socket->write(m.toAscii());
            socket->flush();
            cout << "CLIENT CMD OUT: " << cmd.toString().toStdString() << endl;
        }

        //read command from host
        if (socket->waitForReadyRead(100))
        {
            QByteArray data = socket->readAll();
            cout << "----" << endl << QString(data.constData()).toStdString() << "----" << endl;
            QStringList list = QString(data.constData()).trimmed().split("\n");
            for (int i=0; i<list.size(); i++)
            {
                NetCommand cmd = NetCommand(list.at(i));
                cout << "CLIENT CMD IN : " << cmd.toString().toStdString() << endl;
                emit commandReceived(cmd);
            }

        }
    }

    isconnected=false;
    socket->disconnect();
    cout << "client: " << "socket->disconnect();" << endl;
    delete socket;
    emit finished();
    emit lostConnection(comActive);
    cout << "client: " << "delete socket, emit finished()" << endl;
}