ctrl: allow to erasing training data leaving graph files

This commit is contained in:
jeefo 2025-01-31 20:40:08 +03:00
commit 4c5cf2503e
No known key found for this signature in database
GPG key ID: D696786B81B667C8
4 changed files with 24 additions and 4 deletions

View file

@ -118,6 +118,7 @@ private:
int cmdNodeSave ();
int cmdNodeLoad ();
int cmdNodeErase ();
int cmdNodeEraseTraining ();
int cmdNodeDelete ();
int cmdNodeCheck ();
int cmdNodeCache ();

View file

@ -88,7 +88,7 @@ public:
int32_t storageToBotFile (int32_t options);
// remove all bot related files from disk
void unlinkFromDisk ();
void unlinkFromDisk (bool onlyTrainingData);
public:
// loading the graph may attempt to recurse loading, with converting or download, reset retry counter

View file

@ -355,6 +355,7 @@ int BotControl::cmdNode () {
"load",
"help",
"erase",
"erase_training",
"fileinfo",
"check"
};
@ -399,6 +400,7 @@ int BotControl::cmdNode () {
addGraphCmd ("save", "save [noarguments]", "Save graph file to disk.", &BotControl::cmdNodeSave);
addGraphCmd ("load", "load [noarguments]", "Load graph file from disk.", &BotControl::cmdNodeLoad);
addGraphCmd ("erase", "erase [iamsure]", "Erases the graph file from disk.", &BotControl::cmdNodeErase);
addGraphCmd ("erase_training", "erase_training", "Erases the training data leaving graph files.", &BotControl::cmdNodeEraseTraining);
addGraphCmd ("delete", "delete [nearest|index]", "Deletes single graph node from map.", &BotControl::cmdNodeDelete);
addGraphCmd ("check", "check [noarguments]", "Check if graph working correctly.", &BotControl::cmdNodeCheck);
addGraphCmd ("cache", "cache [nearest|index]", "Caching node for future use.", &BotControl::cmdNodeCache);
@ -616,7 +618,7 @@ int BotControl::cmdNodeErase () {
// prevent accidents when graph are deleted unintentionally
if (arg <StringRef> (iamsure) == "iamsure") {
bstor.unlinkFromDisk ();
bstor.unlinkFromDisk (false);
}
else {
msg ("Please, append \"iamsure\" as parameter to get graph erased from the disk.");
@ -624,6 +626,14 @@ int BotControl::cmdNodeErase () {
return BotCommandResult::Handled;
}
int BotControl::cmdNodeEraseTraining () {
enum args { graph_cmd = 1, cmd };
bstor.unlinkFromDisk (true);
return BotCommandResult::Handled;
}
int BotControl::cmdNodeDelete () {
enum args { graph_cmd = 1, cmd, nearest };

View file

@ -390,14 +390,16 @@ int32_t BotStorage::storageToBotFile (int32_t options) {
return BotFile::Graph;
}
void BotStorage::unlinkFromDisk () {
void BotStorage::unlinkFromDisk (bool onlyTrainingData) {
// this function removes graph file from the hard disk
StringArray unlinkable {};
bots.kickEveryone (true);
// if we're delete graph, delete all corresponding to it files
unlinkable.emplace (buildPath (BotFile::Graph)); // graph itself
if (!onlyTrainingData) {
unlinkable.emplace (buildPath (BotFile::Graph)); // graph itself
}
unlinkable.emplace (buildPath (BotFile::Practice)); // corresponding to practice
unlinkable.emplace (buildPath (BotFile::Vistable)); // corresponding to vistable
unlinkable.emplace (buildPath (BotFile::Pathmatrix)); // corresponding to matrix
@ -412,6 +414,13 @@ void BotStorage::unlinkFromDisk () {
}
}
graph.reset (); // re-initialize points
if (onlyTrainingData) {
graph.loadGraphData ();
// take bots back to game
cv_quota.revert ();
}
}
StringRef BotStorage::getRunningPath () {