int ProgramManager::StopProgram( int programId ) { Process* process = this->runningPrograms[programId]; if ( process == NULL ) { EventLogger::Instance()->WriteVerbose( "Program with id %d is not started!", programId ); return ERROR_PRNOTSTARTED_ID; } Program* program = process->GetProgram(); if ( program == NULL ) { EventLogger::Instance()->WriteVerbose( "Program with id %d is not started!", programId ); return ERROR_PRNOTSTARTED_ID; } process->Stop(); // to do !!! MappingManager::Instance()->FinalizeProgram( program ); // delete process & program; // delete this->runningPrograms[program->Id()]; this->runningPrograms[program->Id()] = NULL; this->runningPrograms.erase( program->Id() ); return 0; }
bool Programs::Remove(const Program& program) { Programs::iterator it = std::find(m_programs.begin(), m_programs.end(), program.Id()); if (it != m_programs.end()) { m_programs.erase(it); return true; } return false; }
void ProgramManager::LoadProgram( string programName, string mappingName ) { string storageFolderPath = Configuration::Instance()->GetStringParam( PROGRAMS_STORAGE_DIR ); string programSavePath = storageFolderPath + "/" + programName; string mappingSavePath = storageFolderPath + "/" + mappingName; string programDefinition = DataSerializationManager::Load( programSavePath.c_str() ); string mappingDefinition = DataSerializationManager::Load( mappingSavePath.c_str() ); Program* program = UpcbJsonParser::Instance()->ParseProgram( programDefinition ); if( program == NULL ) return; this->availablePrograms[program->Id()] = programDefinition; this->programMappings[program->Id()] = mappingDefinition; //delete program; }
void ProgramManager::HandleError( void* sender, ErrorItem* error) { Process* process = ( Process* )sender; if( process == NULL ) return; Program* program = process->GetProgram(); if ( program == NULL ) { EventLogger::Instance()->WriteVerbose( "Program with id %d is still not started but an Error in the process with the same id is found!", program->Id() ); return; } process->Stop(); // to do !!! MappingManager::Instance()->FinalizeProgram( program ); // delete process & program; // delete this->runningPrograms[program->Id()]; this->runningPrograms[program->Id()] = NULL; this->runningPrograms.erase( program->Id() ); }
void ProgramManager::AddProgram( string json ) { Program* program = UpcbJsonParser::Instance()->ParseProgram( json ); if( program == NULL ) return; this->availablePrograms[program->Id()] = json; //delete program; //Save Program & Mapping: string storageFolderPath = Configuration::Instance()->GetStringParam( PROGRAMS_STORAGE_DIR ); struct stat st; if ( stat( storageFolderPath.c_str(), &st ) != 0 ) mkdir( storageFolderPath.c_str(), 0777 ); string programSavePath = storageFolderPath + "/" + program->Name() + ".xml"; DataSerializationManager::Save( json, programSavePath.c_str() ); }