// Plug'n'Dose : point d'entrée WebAssembly du noyau Tucuxi (tucuxi-core, AGPL v3). // Reprend la logique de tucucli : charge les fiches d'un dossier, calcule une requête XML, écrit la réponse XML. #include #include #include "tucucommon/loggerhelper.h" #include "tucucommon/componentmanager.h" #include "tucucore/drugmodelrepository.h" #include "tucuquery/querylogger.h" #include "clicomputer.h" static bool g_init = false; static Tucuxi::Core::DrugModelRepository* g_repo = nullptr; extern "C" { EMSCRIPTEN_KEEPALIVE int tucu_compute(const char* drugPath, const char* input, const char* output) { try { auto* pCmpMgr = Tucuxi::Common::ComponentManager::getInstance(); if (!g_init) { Tucuxi::Common::LoggerHelper::init("/tmp/tucu.log"); g_repo = dynamic_cast(Tucuxi::Core::DrugModelRepository::createComponent()); pCmpMgr->registerComponent("DrugModelRepository", g_repo); g_repo->addFolderPath(drugPath); auto* ql = dynamic_cast(Tucuxi::Query::QueryLogger::createComponent("")); pCmpMgr->registerComponent("QueryLogger", ql); g_init = true; } CliComputer computer; return static_cast(computer.compute(input, output, "")); } catch (const std::exception& e) { return -100; } catch (...) { return -101; } } }