Пример #1
0
    bool DiCommandManager::ExecuteCommand(const DiString& cmd)
    {
        if (cmd.size() < 1)
            return false;
        
        // this is a comment
        if (cmd[0] == '#')
            return true;

        DiCmdArgs argus;

        DiString& command = argus.GetCommand();
        DiKeyList& splitList = argus.GetKeyList();

        DiString cmds = cmd;
        cmds.Tokenize(" ", splitList);

        if (splitList.empty())
            return true;

        command = cmd;

        DiString& kName = splitList.at(0);

        kName.ToLower();

        DiStringCmdInfoMap::iterator it = mCmdInfos.find(kName);
        if (it == mCmdInfos.end())
        {
            DI_WARNING( "can't find command. [%s]", kName.c_str());
            return false;
        }

        DiCmdInfo kCmdInfo = it->second;

        bool iRlt = kCmdInfo.mFunc(&argus);
        if (!iRlt)
        {
            DI_WARNING( "execute failed. [%s]", command.c_str());
            return false;
        }

        return true;
    }