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));
}
Beispiel #2
0
 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);
 }
Beispiel #3
0
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);
}