bool CQueryPlayers::Thread() { bf_read* bf; bool s = false; // Request players if ( Challenge( A2S_PLAYER ) && ( bf = Response() ) ) { if ( bf->Read<long>()==-1 && bf->Read<char>()==S2A_PLAYER ) { // Alleged number of players unsigned char num = bf->Read<unsigned char>(); for ( ; num; --num ) { unsigned char index = bf->Read<unsigned char>(); const char* name = bf->ReadString(); if ( !name ) goto failure; long score = bf->Read<long>(); float& duration = bf->Read<float>(); _cb->PlayersAdd( name, score, duration ); } s = true; } ::free( bf ); } failure: _cb->PlayersFinished( s ); return s; }
AJ_Status AJ_SASL_Advance(AJ_SASL_Context* context, char* inStr, char* outStr, uint32_t outLen) { AJ_Status status; if (!outStr) { return AJ_ERR_RESOURCES; } if ((context->state == AJ_SASL_AUTHENTICATED) || (context->state == AJ_SASL_FAILED)) { return AJ_ERR_UNEXPECTED; } if (++context->authCount > MAX_AUTH_COUNT) { return AJ_ERR_SECURITY; } AJ_Printf("SASL->%s\n", inStr); *outStr = '\0'; if (context->role == AJ_AUTH_CHALLENGER) { status = Challenge(context, inStr, outStr, outLen); } else { status = Response(context, inStr, outStr, outLen); } AJ_Printf("SASL<-%s\n", outStr); return status; }
std::string ChallengeManager::GenerateChallenge( const netadr_t& source ) { auto challenge = Challenge( source ); Push( challenge ); return challenge.String(); }
std::string IDSEXT::InvokeMethod(const std::string& command) { int index = command.find_first_of(" "); string strCommand = command.substr(0, index); string strParam = command.substr(index + 1, command.length()); Json::Reader reader; Json::Value obj; if (strCommand == "getVersion") { return GetVersion(); } else if (strCommand == "registerProvider") { return RegisterProvider(strParam); } else if (strCommand == "setOption") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s\n", "error parsing\n"); return "unable to parse options"; } int option = obj["option"].asInt(); const std::string value = obj["value"].asString(); return( SetOption(option, value) ); } else if (strCommand == "getToken") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); std::string tokenType = obj["tokenType"].asString(); const std::string appliesTo = obj["appliesTo"].asString(); GetToken(provider, tokenType, appliesTo); } else if (strCommand == "clearToken") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); std::string tokenType = obj["tokenType"].asString(); const std::string appliesTo = obj["appliesTo"].asString(); ClearToken(provider, tokenType, appliesTo); } else if (strCommand == "getProperties") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int propertyType = obj["propertyType"].asInt(); int numProps = obj["numProps"].asInt(); const std::string userProps = obj["userProperties"].asString(); GetProperties(provider, propertyType, numProps, userProps); } else if (strCommand == "getData") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int dataType = obj["dataType"].asInt(); int dataFlags = obj["dataFlags"].asInt(); const std::string dataName = obj["dataName"].asString(); GetData(provider, dataType, dataFlags, dataName); } else if (strCommand == "createData") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int dataType = obj["dataType"].asInt(); int dataFlags = obj["dataFlags"].asInt(); const std::string dataName = obj["dataName"].asString(); const std::string dataValue = obj["dataValue"].asString(); CreateData(provider, dataType, dataFlags, dataName, dataValue); } else if (strCommand == "deleteData") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int dataType = obj["dataType"].asInt(); int dataFlags = obj["dataFlags"].asInt(); const std::string dataName = obj["dataName"].asString(); DeleteData(provider, dataType, dataFlags, dataName); } else if (strCommand == "setData") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int dataType = obj["dataType"].asInt(); int dataFlags = obj["dataFlags"].asInt(); const std::string dataName = obj["dataName"].asString(); const std::string dataValue = obj["dataValue"].asString(); SetData(provider, dataType, dataFlags, dataName, dataValue); } else if (strCommand == "listData") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int dataType = obj["dataType"].asInt(); int dataFlags = obj["dataFlags"].asInt(); ListData(provider, dataType, dataFlags); } else if (strCommand == "challenge") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int challengeType = obj["challengeType"].asInt(); int challengeFlags = obj["challengeFlags"].asInt(); Challenge(provider, challengeType, challengeFlags); } else if (strCommand == "registerNotifier") { // parse the JSON bool parse = reader.parse(strParam, obj); if (!parse) { //fprintf(stderr, "%s", "error parsing\n"); return "unable to parse options"; } event_id = obj["_eventId"].asString(); std::string provider = obj["provider"].asString(); int notifierType = obj["notifierType"].asInt(); int notifierFlags = obj["notifierFlags"].asInt(); std::string notifierName = obj["notifierName"].asString(); RegisterNotifier(provider, notifierType, notifierFlags, notifierName); } return ""; }
int main(int argc, char *argv[]) { int Opt1; int CLOpt1; string File_name; string running = "true"; cout << "Random Maths Question Generator (RMQG) Copyright (C) 2011 - 2019 Peter Wright" << endl; cout << "This program comes with ABSOLUTELY NO WARRANTY; for details see the file named COPYING in the program folder." << endl; cout << "This is free software, and you are welcome to redistribute it" << endl; cout << "under certain conditions; for details see the file named COPYING in the program folder." << endl; cout << " " << endl; if(argc <= 1) { cout << "welcome to the random maths question generator." << endl; cout << " " << endl; while (running == "true") { cout << "1) Casual mode. 2) Challenge mode. 3) Help. 4) Exit." << endl; cout << ">"; cin >> Opt1; switch (Opt1) { case 1: { //Casual mode. Casual(); break; } case 2: { //Challenge mode, Coming soon. Challenge(); break; } case 3: { //Help. cout << " " << endl; cout << "Casual mode." << endl; cout << "When it asks you what type of question you would like to do type in either 1 for" << endl; cout << "basic questions followed by what type of basic question you want to do or 2 for" << endl; cout << "decimal questions followed by what type of decimal question you would like to do." << endl; cout << "Here's a couple of examples:" << endl; cout << "Typing in 11 would make it show you a basic multiply question." << endl; cout << "Typing in 21 would make it show you a decimal multiply question." << endl; break; } case 4: { running = "false"; break; } } } }