APIModVersion::APIModVersion(CharString versionstr){ // discards name split from ':', only keeps version number major = minor = submajor = subminor = 0; atleastver = false; // forget modname if it is still in the string if(versionstr.contains(":")){ LinkedList<CharString> vsplit = versionstr.split(":"); versionstr = vsplit[1]; } this->versionstring = versionstr; // keep original string if(versionstr.startsWith(">")){ atleastver = true; versionstr.shiftLeft(1); } if(versionstr.startsWith("v")) versionstr.shiftLeft(1); if(versionstr.contains(".")){ LinkedList<CharString> vsplit = versionstr.split("."); if(vsplit[0].isValidNumber()) major = vsplit[0].getInt(); if(vsplit[1].isValidNumber()) minor = vsplit[1].getInt(); if(vsplit.size() >= 3 && vsplit[2].isValidNumber()) submajor = vsplit[2].getInt(); if(vsplit.size() >= 4 && vsplit[3].isValidNumber()) subminor = vsplit[3].getInt(); }else{ // what? Single version number? if(versionstr.isValidNumber()){ major = versionstr.getInt(); }else{ // dunno... cout << "API Mod Version could not figure out the version for " << versionstring << endl; } } }
void _msgClientHandler_ANY_recv(MSGServer *serv, MSGClient* cli, CharString dataIn, CharString &dataOut){ // handles any message type. if(dataIn.startsWith("channel:publish:")){ // channel publish data (to here!) // channel:publish:CHANNAME:DATA LinkedList<CharString> c = dataIn.split(":"); // +":id" when sent to other channels MSGClientChannel* chan = serv->getMSGChannel(c[2]); if(chan != 0x0){ CharString pack = dataIn; pack += ":"; pack += cli->identity; chan->distributemessagepacket(pack); // send out the goods } }else if(dataIn.startsWith("channel:subscribe:")){ // client subscribes to channel // channel:subscribe:CHANNAME }else if(dataIn.startsWith("channel:unsubscribe:")){ // client unsubscribes from channel // channel:unsubscribe:CHANNAME }else if(cli->isbserver) { // Is another broadcast server??? if(dataIn.startsWith("newid:")){ // sent from other server // newid:IP:ID }else if(dataIn.startsWith("newchannel:")){ // new messaging channel // newchannel:NAME }else if(dataIn.startsWith("newsubscriber:")){ // new subscriber for the channel // newsubscriber:NAME:ID }else if(dataIn.startsWith("unsubscriber:")){ // channel unsub // unsubscriber:NAME:ID } } }