void AuthorizationHandler::processRequest() { DEBUG("Server", "Processing < Authorize > request."); QString message = ValidateToken(); m_pClient->sendTextMessage(message); }
bool Compiler2Pass::processRulePath( uint rulepathIDX) { // rule path determines what tokens and therefore what symbols are acceptable from the source // it is assumed that the tokens with the longest similar symbols are arranged first so // if a match is found it is accepted and no further searching is done // record position of last token in container // to be used as the rollback position if a valid token is not found uint TokenContainerOldSize = mTokenInstructions.size(); int OldCharPos = mCharPos; int OldLinePos = mCurrentLine; uint OldConstantsSize = mConstants.size(); // keep track of what non-terminal token activated the rule uint ActiveNTTRule = mRootRulePath[rulepathIDX].mTokenID; // start rule path at next position for definition rulepathIDX++; // assume the rule will pass bool Passed = true; bool EndFound = false; // keep following rulepath until the end is reached while (EndFound == false) { switch (mRootRulePath[rulepathIDX].mOperation) { case otAND: // only validate if the previous rule passed if(Passed) Passed = ValidateToken(rulepathIDX, ActiveNTTRule); break; case otOR: // only validate if the previous rule failed if ( Passed == false ) { // clear previous tokens from entry and try again mTokenInstructions.resize(TokenContainerOldSize); Passed = ValidateToken(rulepathIDX, ActiveNTTRule); } else { // path passed up to this point therefore finished so pretend end marker found EndFound = true; } break; case otOPTIONAL: // if previous passed then try this rule but it does not effect succes of rule since its optional if(Passed) ValidateToken(rulepathIDX, ActiveNTTRule); break; case otREPEAT: // repeat until no tokens of this type found // at least one must be found if(Passed) { int TokensPassed = 0; // keep calling until failure while ( Passed = ValidateToken(rulepathIDX, ActiveNTTRule)) { // increment count for previous passed token TokensPassed++; } // defaults to Passed = fail // if at least one token found then return passed = true if (TokensPassed > 0) Passed = true; } break; case otEND: // end of rule found so time to return EndFound = true; if(Passed == false) { // the rule did not validate so get rid of tokens decoded // roll back the token container end position to what it was when rule started // this will get rid of all tokens that had been pushed on the container while // trying to validating this rule mTokenInstructions.resize(TokenContainerOldSize); mConstants.resize(OldConstantsSize); mCharPos = OldCharPos; mCurrentLine = OldLinePos; } break; default: // an exception should be raised since the code should never get here Passed = false; EndFound = true; break; } // move on to the next rule in the path rulepathIDX++; } return Passed; }