Software /
code /
prosody
Comparison
net/server_event.lua @ 8781:53178b6ba589
net.server: Add watchfd, a simple API for watching file descriptors
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 09 May 2018 16:15:40 +0200 |
parent | 8751:469f78fe1c3e |
child | 8983:23f66f04e216 |
comparison
equal
deleted
inserted
replaced
8780:4cab4ee5dfcc | 8781:53178b6ba589 |
---|---|
832 end | 832 end |
833 , delay); | 833 , delay); |
834 return event_handle; | 834 return event_handle; |
835 end | 835 end |
836 | 836 |
837 local function watchfd(fd, onreadable, onwriteable) | |
838 local handle = {}; | |
839 function handle:setflags(r,w) | |
840 if r ~= nil then | |
841 if r and not self.wantread then | |
842 self.wantread = base:addevent(fd, EV_READ, function () | |
843 onreadable(self); | |
844 end); | |
845 elseif not r and self.wantread then | |
846 self.wantread:close(); | |
847 self.wantread = nil; | |
848 end | |
849 end | |
850 if w ~= nil then | |
851 if w and not self.wantwrite then | |
852 self.wantwrite = base:addevent(fd, EV_WRITE, function () | |
853 onwriteable(self); | |
854 end); | |
855 elseif not r and self.wantread then | |
856 self.wantwrite:close(); | |
857 self.wantwrite = nil; | |
858 end | |
859 end | |
860 end | |
861 handle:setflags(onreadable, onwriteable); | |
862 return handle; | |
863 end | |
864 | |
837 return { | 865 return { |
838 cfg = cfg, | 866 cfg = cfg, |
839 base = base, | 867 base = base, |
840 loop = loop, | 868 loop = loop, |
841 link = link, | 869 link = link, |
848 setquitting = setquitting, | 876 setquitting = setquitting, |
849 closeall = closeallservers, | 877 closeall = closeallservers, |
850 get_backend = get_backend, | 878 get_backend = get_backend, |
851 hook_signal = hook_signal, | 879 hook_signal = hook_signal, |
852 add_task = add_task, | 880 add_task = add_task, |
881 watchfd = watchfd, | |
853 | 882 |
854 __NAME = SCRIPT_NAME, | 883 __NAME = SCRIPT_NAME, |
855 __DATE = LAST_MODIFIED, | 884 __DATE = LAST_MODIFIED, |
856 __AUTHOR = SCRIPT_AUTHOR, | 885 __AUTHOR = SCRIPT_AUTHOR, |
857 __VERSION = SCRIPT_VERSION, | 886 __VERSION = SCRIPT_VERSION, |