void QTwitchChat::parseMessage() { if( !socket_ ) return; if( socket_->state() == QAbstractSocket::ConnectedState ) { QString line = socket_->readLine(); //qDebug() << line; //поадекватнее надо быть if( line.contains ( "376 " + DEFAULT_USER_NICK_NAME ) ) { socket_->write( QString( "JOIN #" + channelName_ + "\r\n" ).toStdString().c_str() ); getSelf(); //emit newMessage( new QChatMessage( "qrc:/resources/twitchlogo.png", TWITCH_USER, "Connecting to " + channelName_ + "...", this ) ); if( isShowSystemMessages() ) emit newMessage( new QChatMessage( TWITCH_SERVICE, TWITCH_USER, "Connected to " + channelName_ + "...", "", this ) ); getStatistic(); if( statisticTimerId_ ) statisticTimerId_ = startTimer( statisticInterval_ ); } else if( line.contains( "PING" ) ) { qDebug() << line; //socket_->write( "PONG tmi.twitch.tv\r\n" ); socket_->write( "PONG :tmi.twitch.tv\r\n" ); } else { //TODO: parse message if( line.contains( "PRIVMSG" ) && !line.contains( "HISTORYEND" ) && !line.contains( "USERCOLOR") ) { QString nickName = line.mid( 1, line.indexOf( '!' ) - 1 ); QString message = line.right( line.size() - line.indexOf( ':', 1 ) - 1 ); //\r\n message = message.left( message.size() - 2 ); //qDebug() << message; message = QChatMessage::replaceEscapeCharecters( message ); message = insertEmotIcons( message ); //message = QChatMessage::insertLinks( message ); bool blackListUser = blackList().contains( nickName ); bool supportersListUser = supportersList().contains( nickName ); if( !isRemoveBlackListUsers() || !blackListUser ) { if( blackListUser ) { emit newMessage( new QChatMessage( TWITCH_SERVICE, nickName, message, "ignore", this ) ); } else { if( supportersListUser ) { emit newMessage( new QChatMessage( TWITCH_SERVICE, nickName, message, "supporter", this ) ); } else { if( isContainsAliases( message ) ) { emit newMessage( new QChatMessage( TWITCH_SERVICE, nickName, message, "alias", this ) ); } else { emit newMessage( new QChatMessage( TWITCH_SERVICE, nickName, message, "", this ) ); } } } } } } if( socket_->canReadLine() ) { parseMessage(); } } }
/** problem reading method of reader */ static SCIP_DECL_READERREAD(readerReadCip) { /*lint --e{715}*/ CIPINPUT cipinput; SCIP_Real objscale; SCIP_Real objoffset; SCIP_Bool dynamicconss; SCIP_Bool dynamiccols; SCIP_Bool dynamicrows; SCIP_Bool initialvar; SCIP_Bool removablevar; SCIP_Bool initialcons; SCIP_Bool removablecons; if( NULL == (cipinput.file = SCIPfopen(filename, "r")) ) { SCIPerrorMessage("cannot open file <%s> for reading\n", filename); SCIPprintSysError(filename); return SCIP_NOFILE; } cipinput.len = 131071; SCIP_CALL( SCIPallocBufferArray(scip, &(cipinput.strbuf), cipinput.len) ); cipinput.linenumber = 0; cipinput.section = CIP_START; cipinput.haserror = FALSE; cipinput.endfile = FALSE; cipinput.readingsize = 65535; SCIP_CALL( SCIPcreateProb(scip, filename, NULL, NULL, NULL, NULL, NULL, NULL, NULL) ); SCIP_CALL( SCIPgetBoolParam(scip, "reading/"READER_NAME"/dynamiccols", &dynamiccols) ); SCIP_CALL( SCIPgetBoolParam(scip, "reading/"READER_NAME"/dynamicconss", &dynamicconss) ); SCIP_CALL( SCIPgetBoolParam(scip, "reading/"READER_NAME"/dynamicrows", &dynamicrows) ); initialvar = !dynamiccols; removablevar = dynamiccols; initialcons = !dynamicrows; removablecons = dynamicrows; objscale = 1.0; objoffset = 0.0; while( cipinput.section != CIP_END && !cipinput.haserror ) { /* get next input string */ SCIP_CALL( getInputString(scip, &cipinput) ); if( cipinput.endfile ) break; switch( cipinput.section ) { case CIP_START: SCIP_CALL( getStart(scip, &cipinput) ); break; case CIP_STATISTIC: SCIP_CALL( getStatistic(scip, &cipinput) ); break; case CIP_OBJECTIVE: SCIP_CALL( getObjective(scip, &cipinput, &objscale, &objoffset) ); break; case CIP_VARS: SCIP_CALL( getVariable(scip, &cipinput, initialvar, removablevar, objscale) ); break; case CIP_FIXEDVARS: SCIP_CALL( getFixedVariables(scip, &cipinput) ); break; case CIP_CONSTRAINTS: SCIP_CALL( getConstraints(scip, &cipinput, initialcons, dynamicconss, removablecons) ); break; default: SCIPerrorMessage("invalid CIP state\n"); SCIPABORT(); } /*lint !e788*/ } if( !SCIPisZero(scip, objoffset) && !cipinput.haserror ) { SCIP_VAR* objoffsetvar; objoffset *= objscale; SCIP_CALL( SCIPcreateVar(scip, &objoffsetvar, "objoffset", objoffset, objoffset, 1.0, SCIP_VARTYPE_CONTINUOUS, TRUE, TRUE, NULL, NULL, NULL, NULL, NULL) ); SCIP_CALL( SCIPaddVar(scip, objoffsetvar) ); SCIP_CALL( SCIPreleaseVar(scip, &objoffsetvar) ); SCIPdebugMessage("added variables <objoffset> for objective offset of <%g>\n", objoffset); } /* close file stream */ SCIPfclose(cipinput.file); if( cipinput.section != CIP_END && !cipinput.haserror ) { SCIPerrorMessage("unexpected EOF\n"); } SCIPfreeBufferArray(scip, &cipinput.strbuf); if( cipinput.haserror ) return SCIP_READERROR; /* successfully parsed cip format */ *result = SCIP_SUCCESS; return SCIP_OKAY; }