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; }