new method PIClientServer::Server::closeAll()
PISignals::releaseSignals()
This commit is contained in:
@@ -49,6 +49,8 @@ public:
|
||||
void listen(PINetworkAddress addr);
|
||||
void listenAll(ushort port) { listen({0, port}); }
|
||||
|
||||
void closeAll();
|
||||
|
||||
int getMaxClients() const { return max_clients; }
|
||||
void setMaxClients(int new_max_clients);
|
||||
int clientsCount() const;
|
||||
|
||||
@@ -60,6 +60,33 @@ void PISignals::grabSignals(PIFlags<PISignals::Signal> signals_) {
|
||||
}
|
||||
|
||||
|
||||
void PISignals::releaseSignals(PIFlags<Signal> signals_) {
|
||||
if (signals_[PISignals::Interrupt]) signal(signalCode(PISignals::Interrupt), SIG_DFL);
|
||||
if (signals_[PISignals::Illegal]) signal(signalCode(PISignals::Illegal), SIG_DFL);
|
||||
if (signals_[PISignals::Abort]) signal(signalCode(PISignals::Abort), SIG_DFL);
|
||||
if (signals_[PISignals::FPE]) signal(signalCode(PISignals::FPE), SIG_DFL);
|
||||
if (signals_[PISignals::SegFault]) signal(signalCode(PISignals::SegFault), SIG_DFL);
|
||||
if (signals_[PISignals::Termination]) signal(signalCode(PISignals::Termination), SIG_DFL);
|
||||
#ifndef CC_VC
|
||||
if (signals_[PISignals::UserDefined1]) signal(signalCode(PISignals::UserDefined1), SIG_DFL);
|
||||
if (signals_[PISignals::UserDefined2]) signal(signalCode(PISignals::UserDefined2), SIG_DFL);
|
||||
#endif
|
||||
#ifndef WINDOWS
|
||||
if (signals_[PISignals::Hangup]) signal(signalCode(PISignals::Hangup), SIG_DFL);
|
||||
if (signals_[PISignals::Quit]) signal(signalCode(PISignals::Quit), SIG_DFL);
|
||||
if (signals_[PISignals::Kill]) signal(signalCode(PISignals::Kill), SIG_DFL);
|
||||
if (signals_[PISignals::BrokenPipe]) signal(signalCode(PISignals::BrokenPipe), SIG_DFL);
|
||||
if (signals_[PISignals::Timer]) signal(signalCode(PISignals::Timer), SIG_DFL);
|
||||
if (signals_[PISignals::ChildStopped]) signal(signalCode(PISignals::ChildStopped), SIG_DFL);
|
||||
if (signals_[PISignals::Continue]) signal(signalCode(PISignals::Continue), SIG_DFL);
|
||||
if (signals_[PISignals::StopProcess]) signal(signalCode(PISignals::StopProcess), SIG_DFL);
|
||||
if (signals_[PISignals::StopTTY]) signal(signalCode(PISignals::StopTTY), SIG_DFL);
|
||||
if (signals_[PISignals::StopTTYInput]) signal(signalCode(PISignals::StopTTYInput), SIG_DFL);
|
||||
if (signals_[PISignals::StopTTYOutput]) signal(signalCode(PISignals::StopTTYOutput), SIG_DFL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void PISignals::raiseSignal(PISignals::Signal signal) {
|
||||
raise(signalCode(signal));
|
||||
}
|
||||
@@ -90,7 +117,7 @@ int PISignals::signalCode(PISignals::Signal signal) {
|
||||
case PISignals::StopTTYInput: return SIGTTIN;
|
||||
case PISignals::StopTTYOutput: return SIGTTOU;
|
||||
#endif
|
||||
default:;
|
||||
default: break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -121,13 +148,13 @@ PISignals::Signal PISignals::signalFromCode(int signal) {
|
||||
case SIGTTIN: return PISignals::StopTTYInput;
|
||||
case SIGTTOU: return PISignals::StopTTYOutput;
|
||||
#endif
|
||||
default:;
|
||||
default: break;
|
||||
}
|
||||
return PISignals::Termination;
|
||||
}
|
||||
|
||||
|
||||
void PISignals::signal_event(int signal) {
|
||||
if (PISignals::ret_func == 0) return;
|
||||
if (!PISignals::ret_func) return;
|
||||
PISignals::ret_func(PISignals::signalFromCode(signal));
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ public:
|
||||
// slot is any function format "void(PISignals::Signal)"
|
||||
static void setSlot(SignalEvent slot) { ret_func = slot; }
|
||||
static void grabSignals(PIFlags<PISignals::Signal> signals_);
|
||||
static void releaseSignals(PIFlags<PISignals::Signal> signals_);
|
||||
static void raiseSignal(PISignals::Signal signal);
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user