void ProgramRegistry::deleteProgram(ProcessId pid) { stdx::lock_guard<stdx::recursive_mutex> lk(_mutex); if (!isPidRegistered(pid)) { return; } close(_outputs.find(pid)->second); _outputs.erase(pid); _programNames.erase(pid); _portToPidMap.erase(portForPid(pid)); }
void ProgramRegistry::deletePid(ProcessId pid) { boost::lock_guard<boost::recursive_mutex> lk(_mutex); if (!isPidRegistered(pid)) { int port = portForPid(pid); if (port < 0) return; deletePort(port); return; } close(_pids.find(pid)->second); _pids.erase(pid); }
void ProgramRegistry::unregisterProgram(ProcessId pid) { stdx::lock_guard<stdx::recursive_mutex> lk(_mutex); invariant(isPidRegistered(pid)); _outputReaderThreads[pid].join(); // Remove the PID from the registry. _outputReaderThreads.erase(pid); _portToPidMap.erase(portForPid(pid)); _registeredPids.erase(pid); }