Remove async

This commit is contained in:
msqr1
2025-09-01 20:51:18 -07:00
parent 5a705a3f56
commit 9e36733c10
13 changed files with 341 additions and 385 deletions

View File

@@ -1,19 +1,18 @@
#include "CommonModel.h"
CommonModel::CommonModel(int index, bool normalMdl, int tarStart, int tarSize) :
normalMdl{normalMdl}, index{index}
CommonModel::CommonModel(int index, bool normalMdl, int tarStart, int tarSize) : normalMdl{normalMdl}, index{index}
{
globalPool.exec([this, tarStart, tarSize]{
extractAndLoad(reinterpret_cast<unsigned char*>(tarStart), tarSize);
});
extractAndLoad(reinterpret_cast<unsigned char *>(tarStart), tarSize);
}
void CommonModel::extractAndLoad(unsigned char* tar, int tarSize) {
void CommonModel::extractAndLoad(unsigned char *tar, int tarSize)
{
// Map index onto [A-Z]
const char storepath[3]{'/', static_cast<char>(index % 26 + 'A')};
int res{untar(tar, tarSize, storepath)};
free(tar);
const char* untarErr{};
switch(res) {
const char *untarErr{};
switch (res)
{
case IncorrectFormat:
untarErr = "Untar: Incorrect tar format, must be USTAR";
break;
@@ -29,20 +28,29 @@ void CommonModel::extractAndLoad(unsigned char* tar, int tarSize) {
case FailedClose:
untarErr = "Untar: Unable to close file after write";
};
if(untarErr != nullptr) {
fireEv(index, Event::status, untarErr);
if (untarErr != nullptr)
{
fireEv(index, untarErr);
return;
}
if(normalMdl) mdl = vosk_model_new(storepath);
else mdl = vosk_spk_model_new(storepath);
if(normalMdl ? std::get<VoskModel*>(mdl) != nullptr : std::get<VoskSpkModel*>(mdl) != nullptr) fireEv(index, status);
else fireEv(index, status, "Unable to load model for recognition");
if (normalMdl)
mdl = vosk_model_new(storepath);
else
mdl = vosk_spk_model_new(storepath);
if (normalMdl ? std::get<VoskModel *>(mdl) != nullptr : std::get<VoskSpkModel *>(mdl) != nullptr)
fireEv(index);
else
fireEv(index, "Unable to load model for recognition");
fs::remove_all(storepath);
}
int CommonModel::findWord(std::string word) {
return vosk_model_find_word(std::get<VoskModel*>(mdl), word.c_str());
int CommonModel::findWord(std::string word)
{
return vosk_model_find_word(std::get<VoskModel *>(mdl), word.c_str());
}
CommonModel::~CommonModel() {
if(normalMdl) vosk_model_free(std::get<VoskModel*>(mdl));
else vosk_spk_model_free(std::get<VoskSpkModel*>(mdl));
CommonModel::~CommonModel()
{
if (normalMdl)
vosk_model_free(std::get<VoskModel *>(mdl));
else
vosk_spk_model_free(std::get<VoskSpkModel *>(mdl));
}