Пример #1
0
KILLENUM Runtime::executeCrunch()
{
  accept( Token::CRUNCH );
  Token::Code code = tokenizer.token();

  zdebug() << __FILE__ << ":" << __LINE__ << code << tokenizer.string();

  KILLENUM ret = PROCEED;
  switch ( code ) {
    case Token::BECOME: ret = execBecome(); break;
    case Token::BIND: ret = execBind(); break;
    case Token::CHANGE: ret = execChange(); break;
    case Token::CHAR: ret = execChar(); break;
    case Token::CLEAR: ret = execClear(); break;
    case Token::CYCLE: ret = execCycle(); break;
    case Token::DIE: ret = execDie(); break;
    case Token::END: ret = execEnd(); break;
    case Token::ENDGAME: ret = execEndgame(); break;
    case Token::GIVE: ret = execGive(); break;
    case Token::GO: ret = execGo(); break;
    case Token::IDLE: ret = execIdle(); break;
    case Token::IF: ret = execIf(); break;
    case Token::LOCK: ret = execLock(); break;
    case Token::PLAY: ret = execPlay(); break;
    case Token::PUT: ret = execPut(); break;
    case Token::RESTART: ret = execRestart(); break;
    case Token::RESTORE: ret = execRestore(); break;
    case Token::SEND: ret = execSend(); break;
    case Token::SET: ret = execSet(); break;
    case Token::SHOOT: ret = execShoot(); break;
    case Token::TAKE: ret = execTake(); break;
    case Token::THROWSTAR: ret = execThrowstar(); break;
    case Token::TRY: ret = execTry(); break;
    case Token::UNLOCK: ret = execUnlock(); break;
    case Token::WALK: ret = execWalk(); break;
    case Token::ZAP: ret = execZap(); break;
    case Token::ENDOFLINE: ret = throwError("COMMAND ERROR");
    default: {
      sendMessage( tokenizer.string() );
      break;
    }
  }

  return ret;
}
int startService(){
    if (login() == -1) return -1;
    printf("IN COMMNAND SESSION\n");
    char buf[BUFFER_SIZE];
    while (1) {
        memset(buf, 0, sizeof(buf));
        if (recv(recvfd, buf, BUFFER_SIZE, 0) <= 0){
            printf("Receive erro:%s(errno:%d)\n", strerror(errno), errno);
            return -1;
        }                                          
        printf("COMMAND[%s]\n",buf);
        if (strcmp(buf, "get") == 0){
            recv(recvfd, buf, BUFFER_SIZE, 0);
            execGet(buf);
            continue;
        }
        if (strcmp(buf, "put") == 0) {
            recv(recvfd, buf, BUFFER_SIZE, 0);
            execPut(buf);
            continue;
        }
        if (strcmp(buf, "quit") == 0) {
            execQuit();
            printf("COMMAND SESSION OVER!\n");
            return 0;
        }
        if (strcmp(buf, "dir") == 0) {
            execDir();
            continue;
        }
        if (strcmp(buf, "cd") == 0) {
            recv(recvfd, buf, BUFFER_SIZE, 0);
            execCd(buf);
            continue;
        }
        if (strcmp(buf, "pwd") == 0) {
            execPwd();
            continue;
        }
        printf("Command Error!\n");
    }
    return 0;
}