예제 #1
0
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;
}
예제 #2
0
파일: main.cpp 프로젝트: bluekirby0/Servo
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;
}