예제 #1
0
파일: console.cpp 프로젝트: odanek/duel6r
    void Console::registerAlias(const std::string &name, const std::string &cmd) {
        AliasRecord *a = findAlias(name);

        if (a == nullptr) {
            verifyRegistration(CON_Lang("Alias registration"), name, false);

            AliasRecord newAlias(name, cmd);

            // Zaradi novy alias tak, aby byly setridene podle abecedy
            size_t position = 0;
            for (const AliasRecord &alias : aliases) {
                if (alias.getName().compare(name) > 0) {
                    break;
                }
                ++position;
            }

            aliases.insert(aliases.begin() + position, newAlias);
        } else {
            a->setCommand(cmd);
        }

        if (hasFlag(RegInfoFlag)) {
            print(CON_Format(CON_Lang("Alias registration: \"{0}\" as \"{1}\" has been successful\n")) << name << cmd);
        }
    }
예제 #2
0
void handleUpdate(char *allTokens[], char response[MAX_RESPONSE_SIZE]){
	//Executes an update and stores a response
	if(strncmp(allTokens[0], "REGISTER", strlen(allTokens[0])) == 0){
		validateArguments(allTokens, 3);
		int val = verifyRegistration(allTokens[1], allTokens[2]);
		if(snprintf(response, MAX_RESPONSE_SIZE, "%i\n", val) < 0)
		{
			perror("Snprintf failed.");
			exit(SNPRINTF_FAILED);
		}
	}
	else if(strncmp(allTokens[0], "ADD_TWEET", strlen(allTokens[0])) == 0){
		validateArguments(allTokens, 4);
		//puts(allTokens[2]);
		int val = addTweet(allTokens[1], allTokens[2], allTokens[3]);
		if(snprintf(response, MAX_RESPONSE_SIZE, "%i\n", val) < 0)
		{
			perror("Snprintf failed.");
			exit(SNPRINTF_FAILED);
		}
	}
	else if(strncmp(allTokens[0], "ADD_FOLLOWEE", strlen(allTokens[0])) == 0){
		validateArguments(allTokens, 3);
		int val = addFollowee(allTokens[1], allTokens[2]);
		if(snprintf(response, MAX_RESPONSE_SIZE, "%i\n", val) < 0)
		{
			perror("Snprintf failed.");
			exit(SNPRINTF_FAILED);
		}
	}
	else if(strncmp(allTokens[0], "REMOVE_FOLLOWEE", strlen(allTokens[0])) == 0){
		validateArguments(allTokens, 3);
		int val = removeFollowee(allTokens[1], allTokens[2]);
		if(snprintf(response, MAX_RESPONSE_SIZE, "%i\n", val) < 0)
		{
			perror("Snprintf failed.");
			exit(SNPRINTF_FAILED);
		}
	}
	else if(strncmp(allTokens[0], "DELETE_ACCOUNT", strlen(allTokens[0])) == 0){
		validateArguments(allTokens, 2);
		int val = removeEntry(allTokens[1], CREDENTIALS_FILE, CREDENTIALS_ENTRY_SIZE, NUM_FIELDS_CREDENTIALS, "%s\t%s\n", 0, &credentialsMutex); //val represents if uname was deleted from credentials file
		removeEntry(allTokens[1], TWEETS_FILE, TWEET_ENTRY_SIZE, NUM_FIELDS_TWEETS, "%s\t%s\t%s\n", 0, &tweetsMutex);
		removeEntry(allTokens[1], FOLLOWEES_FILE, FOLLOWEES_ENTRY_SIZE, NUM_FIELDS_FOLLOWEES, "%s\t%s\n", 0, &followeesMutex);
		removeEntry(allTokens[1], FOLLOWEES_FILE, FOLLOWEES_ENTRY_SIZE, NUM_FIELDS_FOLLOWEES, "%s\t%s\n", 1, &followeesMutex);
		if(snprintf(response, MAX_RESPONSE_SIZE, "%i\n", val) < 0)
		{
			perror("Snprintf failed.");
			exit(SNPRINTF_FAILED);
		}
	}
	else{
			exit(INVALID_SELECTION);
		}
		
}
예제 #3
0
    void Console::registerVariable(const std::string &name, Uint32 flags, Variable::Pointer &&ptr) {
        verifyRegistration(name, CON_Lang("Variable registration"), ptr == nullptr);

        // Sort lexicographically
        Size position = 0;
        for (const VarRecord &var : vars) {
            if (var.getName().compare(name) > 0) {
                break;
            }
            ++position;
        }

        vars.emplace(vars.begin() + position, name, flags, std::forward<Variable::Pointer>(ptr));

        if (hasFlag(RegInfoFlag)) {
            print(CON_Format(CON_Lang("Variable registration: \"{0}\" has been successful\n")) << name);
        }
    }
예제 #4
0
파일: console.cpp 프로젝트: odanek/duel6r
    void Console::registerCommand(const std::string &name, Command command) {
        verifyRegistration(CON_Lang("Command registration"), name, !command);

        CommandRecord newCommand(name, command);

        // Zaradi novy prikaz tak, aby byly setridene podle abecedy
        size_t position = 0;
        for (const CommandRecord &cmd : cmds) {
            if (cmd.getName().compare(name) > 0) {
                break;
            }
            ++position;
        }

        cmds.insert(cmds.begin() + position, newCommand);

        if (hasFlag(RegInfoFlag)) {
            print(CON_Format(CON_Lang("Command registration: \"{0}\" has been successful\n")) << name);
        }
    }