new method PIClientServer::Server::closeAll()
PISignals::releaseSignals()
This commit is contained in:
@@ -90,6 +90,18 @@ void PIClientServer::Server::listen(PINetworkAddress addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PIClientServer::Server::closeAll() {
|
||||||
|
clients_mutex.lock();
|
||||||
|
for (auto c: clients) {
|
||||||
|
c->aboutDelete();
|
||||||
|
c->destroy();
|
||||||
|
delete c;
|
||||||
|
}
|
||||||
|
clients.clear();
|
||||||
|
clients_mutex.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PIClientServer::Server::setMaxClients(int new_max_clients) {
|
void PIClientServer::Server::setMaxClients(int new_max_clients) {
|
||||||
max_clients = new_max_clients;
|
max_clients = new_max_clients;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ public:
|
|||||||
void listen(PINetworkAddress addr);
|
void listen(PINetworkAddress addr);
|
||||||
void listenAll(ushort port) { listen({0, port}); }
|
void listenAll(ushort port) { listen({0, port}); }
|
||||||
|
|
||||||
|
void closeAll();
|
||||||
|
|
||||||
int getMaxClients() const { return max_clients; }
|
int getMaxClients() const { return max_clients; }
|
||||||
void setMaxClients(int new_max_clients);
|
void setMaxClients(int new_max_clients);
|
||||||
int clientsCount() const;
|
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) {
|
void PISignals::raiseSignal(PISignals::Signal signal) {
|
||||||
raise(signalCode(signal));
|
raise(signalCode(signal));
|
||||||
}
|
}
|
||||||
@@ -90,7 +117,7 @@ int PISignals::signalCode(PISignals::Signal signal) {
|
|||||||
case PISignals::StopTTYInput: return SIGTTIN;
|
case PISignals::StopTTYInput: return SIGTTIN;
|
||||||
case PISignals::StopTTYOutput: return SIGTTOU;
|
case PISignals::StopTTYOutput: return SIGTTOU;
|
||||||
#endif
|
#endif
|
||||||
default:;
|
default: break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -121,13 +148,13 @@ PISignals::Signal PISignals::signalFromCode(int signal) {
|
|||||||
case SIGTTIN: return PISignals::StopTTYInput;
|
case SIGTTIN: return PISignals::StopTTYInput;
|
||||||
case SIGTTOU: return PISignals::StopTTYOutput;
|
case SIGTTOU: return PISignals::StopTTYOutput;
|
||||||
#endif
|
#endif
|
||||||
default:;
|
default: break;
|
||||||
}
|
}
|
||||||
return PISignals::Termination;
|
return PISignals::Termination;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PISignals::signal_event(int signal) {
|
void PISignals::signal_event(int signal) {
|
||||||
if (PISignals::ret_func == 0) return;
|
if (!PISignals::ret_func) return;
|
||||||
PISignals::ret_func(PISignals::signalFromCode(signal));
|
PISignals::ret_func(PISignals::signalFromCode(signal));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public:
|
|||||||
// slot is any function format "void(PISignals::Signal)"
|
// slot is any function format "void(PISignals::Signal)"
|
||||||
static void setSlot(SignalEvent slot) { ret_func = slot; }
|
static void setSlot(SignalEvent slot) { ret_func = slot; }
|
||||||
static void grabSignals(PIFlags<PISignals::Signal> signals_);
|
static void grabSignals(PIFlags<PISignals::Signal> signals_);
|
||||||
|
static void releaseSignals(PIFlags<PISignals::Signal> signals_);
|
||||||
static void raiseSignal(PISignals::Signal signal);
|
static void raiseSignal(PISignals::Signal signal);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user