net/server_epoll.lua
changeset 13445 6d96b6eeee5a
parent 13444 b27de3d2bad6
child 13451 5c9df28a57bb
equal deleted inserted replaced
13444:b27de3d2bad6 13445:6d96b6eeee5a
  1145 end
  1145 end
  1146 
  1146 
  1147 local hook_signal;
  1147 local hook_signal;
  1148 if have_signal and signal.signalfd then
  1148 if have_signal and signal.signalfd then
  1149 	local function dispatch(self)
  1149 	local function dispatch(self)
  1150 		return self:on("signal", signal.signalfd_read(self:getfd()));
  1150 		return self:on("signal", self.conn:read());
  1151 	end
  1151 	end
  1152 
  1152 
  1153 	function hook_signal(signum, cb)
  1153 	function hook_signal(signum, cb)
  1154 		local watch = watchfd(signal.signalfd(signum), dispatch);
  1154 		local watch = watchfd(signal.signalfd(signum), dispatch);
  1155 		watch.listeners = { onsignal = cb };
  1155 		watch.listeners = { onsignal = cb };
       
  1156 		watch.close = nil; -- revert to default
  1156 		return watch;
  1157 		return watch;
  1157 	end
  1158 	end
  1158 end
  1159 end
  1159 
  1160 
  1160 return {
  1161 return {