net/server_epoll.lua
changeset 13451 5c9df28a57bb
parent 13445 6d96b6eeee5a
child 13454 f36e1e1b84fe
equal deleted inserted replaced
13450:dba7073f1452 13451:5c9df28a57bb
  1149 	local function dispatch(self)
  1149 	local function dispatch(self)
  1150 		return self:on("signal", self.conn:read());
  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 sigfd = signal.signalfd(signum);
       
  1155 		if not sigfd then
       
  1156 			log("error", "Could not hook signal %d", signum);
       
  1157 			return nil, "failed";
       
  1158 		end
       
  1159 		local watch = watchfd(sigfd, dispatch);
  1155 		watch.listeners = { onsignal = cb };
  1160 		watch.listeners = { onsignal = cb };
  1156 		watch.close = nil; -- revert to default
  1161 		watch.close = nil; -- revert to default
  1157 		return watch;
  1162 		return watch;
  1158 	end
  1163 	end
  1159 end
  1164 end