packages/engine/scram-node/targets/scram-node/src/AsyncScramWorker.cpp
Source code
cpp
#include <boost/program_options.hpp>
#include <exception>
#include "AsyncScramWorker.h"
#include "targets/scram-cli/utils/RunScram.h"
#include "targets/scram-cli/utils/ParseArguments.h"
namespace po = boost::program_options;
AsyncScramWorker::AsyncScramWorker(Napi::Function& callback, std::vector<std::string> args)
: Napi::AsyncWorker(callback), args(std::move(args)) {};
void AsyncScramWorker::Execute() {
// Convert vector of strings to argc and argv format for command-line parsing.
std::vector<char*> argv;
for(std::string &s: args) {
argv.push_back(&s[0]);
}
argv.push_back(NULL);
try {
// Parse arguments and run the scram command, catching any exceptions.
po::variables_map vm;
ScramCLI::ParseArguments(argv.size() - 1, argv.data(), &vm);
ScramCLI::RunScram(vm);
} catch (const std::exception& e) {
// If an exception occurs, record the error message.
SetError(e.what());
}
}
void AsyncScramWorker::OnOK() {
Napi::HandleScope scope(Env());
Callback().Call({Env().Null()});
}Updated on 2025-11-11 at 16:51:09 +0000
