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); }
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); } }
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; }
/***************************************************************************** * 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; }
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; }