У меня есть следующая (упрощенная) архитектура:
клиент (ы) -> баунсер -> сервер
Клиенты отправляют команды на сервер. «Вышибала» выполняет проверку работоспособности и другие проверки команд, выданных клиентом, и предотвращает попадание ошибочных команд на сервер. Например, вышибала может иметь следующий код:
bool Bouncer::someCommand(const someCommandArg& arg) {
if (arg.x < 100) {
return false;
}
if (arg.y > 10) {
return false;
}
// more checks ...
return server->someCommand(arg);
}
Проблема с этим подходом заключается в том, что условия баунсера должны быть жестко запрограммированы один за другим и недостаточно гибки. Я ищу способ определить эти условия в некотором файле конфигурации, который вышибала будет загружать при создании и будет проходить через все
условия, когда someCommand
вызывается. Более того, сам тестовый цикл должен быть быстрым.
Если бы это был C #, думаю, я бы использовал его возможности компиляции на лету, и мои пункты if
были записаны в виде простого кода в файле конфигурации. Что вы предлагаете для C ++?