static size_t formatLogTransformedCommandData (char *buffer, size_t size, const void *data) { const LogTransformedCommandData *cmd = data; size_t length; STR_BEGIN(buffer, size); STR_PRINTF("command: "); { size_t sublength = formatCommand(STR_NEXT, STR_LEFT, cmd->oldCommand); STR_ADJUST(sublength); } STR_PRINTF(" -> "); { size_t sublength = formatCommand(STR_NEXT, STR_LEFT, cmd->newCommand); STR_ADJUST(sublength); } length = STR_LENGTH; STR_END return length; }
bool __stdcall Servo::HandleCommand(const char* szCommand, int iType) { if (iType == 0) { return false; } char szClean[1024]; m_AshitaCore->GetDataModule()->ParseAutoTrans(szCommand,szClean,1024,false); std::string arg; cmdParse->InputCommand(szClean); cmdParse->GetFirstCommand(&arg); if(arg == "/servo") { cmdParse->GetNextCommand(&arg); if(arg == "on") { log << Chat::Format::RoyalBlue << "Servo started in server mode, with a hostmask of: "; while (!lservAddr.try_lock()) std::this_thread::sleep_for(std::chrono::milliseconds(50)); if (cmdParse->GetNextCommand(&arg)) { servAddr = arg; log << servAddr; } else { servAddr = ""; log << "localhost"; } lservAddr.unlock(); SetState(ServoMode::Mode::Server); conn.swap(std::thread(&Servo::Serv, this)); log << Chat::Control::flush; } else if(arg == "sync") { me = m_AshitaCore->GetDataModule()->GetParty()->Member[0].Name; log << Chat::Format::RoyalBlue << "Servo started in client mode, connected to: "; while (!lservAddr.try_lock()) std::this_thread::sleep_for(std::chrono::milliseconds(50)); if (cmdParse->GetNextCommand(&arg)) { servAddr = arg; log << servAddr; } else { servAddr = ""; log << "localhost"; } lservAddr.unlock(); SetState(ServoMode::Mode::Client); conn.swap(std::thread(&Servo::Client, this)); log << Chat::Control::flush; } else if (arg == "off") { SetState(ServoMode::Mode::Standby); log << Chat::Format::RoyalBlue << "Servo set to standy!" << Chat::Control::flush; } else if (arg == "command" || arg == "send") { if (cmdParse->GetRemainingCommands(&arg)) { arg = ":: " + arg; formatCommand(&arg); SendCommand(arg); } } else if (arg == "sendto") { if (cmdParse->GetRemainingCommands(&arg)) { formatCommand(&arg); SendCommand(arg); } } return true; } return false; }