def event_str(event):
r = []
if event & select.POLLIN:
r.append('IN')
if event & select.POLLOUT:
r.append('OUT')
if event & select.POLLPRI:
r.append('PRI')
if event & select.POLLERR:
r.append('ERR')
if event & select.POLLHUP:
r.append('HUP')
if event & select.POLLNVAL:
r.append('NVAL')
return ' '.join(r)
python类POLLPRI的实例源码
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error as e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def start_loop(self):
self.poll = select.poll()
self.poll.register(sys.stdin,
select.POLLIN | select.POLLHUP | select.POLLPRI)
self.poll.register(self.fileno(),
select.POLLIN | select.POLLHUP | select.POLLPRI)
self.start_of_line = False
self.read_escape = False
with WINCHHandler(self):
try:
self.setup_tty()
self.run_forever()
except socket.error as e:
raise exceptions.ConnectionFailed(e)
except websocket.WebSocketConnectionClosedException as e:
raise exceptions.Disconnected(e)
finally:
self.restore_tty()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def __init__(self, server_address):
self.server_address = server_address # ?????IP???
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ??TCP??socket
self.__setblock = False # ??????????
self.message_queue = {} # ??????
self.rlist = (select.POLLIN or select.POLLHUP or select.POLLPRI or select.POLLERR) # ????
self.wlist = (self.rlist or select.POLLOUT) # ????
self.fd_socket = {} # ??????????socket????
self.poll = select.poll() # ????????
self.logger = logging.getLogger(__name__) # ??????
if self.output_console:
self.console_handler = logging.StreamHandler() # ???????????
if self.logfile: # ???????,????????
self.file_handler = logging.FileHandler(filename=self.logfile, encoding=self.encoding) # ????????
self.set_log() # ????
self.bind() # ????IP???
def __init__(self, server_address):
"""?????,socket???
:param server_address:
:return:
"""
self.server_address = server_address # ?????IP???
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ??TCP??socket
self.__setblock = False # ??????????
self.message_queue = {} # ??????
self.rlist = (select.POLLIN or select.POLLHUP or select.POLLPRI or select.POLLERR) # ????
self.wlist = (self.rlist or select.POLLOUT) # ????
self.fd_socket = {} # ??????????socket????
self.poll = select.poll() # ????????
self.logger = logging.getLogger(__name__) # ??????
if self.output_console:
self.console_handler = logging.StreamHandler() # ???????????
if self.logfile: # ???????,????????
self.file_handler = logging.FileHandler(filename=self.logfile, encoding=self.encoding) # ????????
self.set_log() # ????
self.bind() # ????IP???
def __init__(self, server_address):
self.server_address = server_address # ?????IP???
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ??TCP??socket
self.message_queue = {} # ??????
self.rlist = (select.POLLIN or select.POLLHUP or select.POLLPRI or select.POLLERR) # ????
self.wlist = (self.rlist or select.POLLOUT) # ????
self.fd_socket = {} # ??????????socket????
self.poll = select.poll() # ????????
self.logger = logging.getLogger(__name__) # ??????
if self.output_console:
self.console_handler = logging.StreamHandler() # ???????????
if self.logfile: # ???????,????????
self.file_handler = logging.FileHandler(filename=self.logfile, encoding=self.encoding) # ????????
self.set_log() # ????
self.connect_server()
self.is_send = None # ????????,????None,???????????
def __init__(self, server_address):
self.server_address = server_address # ?????IP???
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ??TCP??socket
self.message_queue = {} # ??????
self.rlist = (select.POLLIN or select.POLLHUP or select.POLLPRI or select.POLLERR) # ????
self.wlist = (self.rlist or select.POLLOUT) # ????
self.fd_socket = {} # ??????????socket????
self.poll = select.poll() # ????????
self.logger = logging.getLogger(__name__) # ??????
if self.output_console:
self.console_handler = logging.StreamHandler() # ???????????
if self.logfile: # ???????,????????
self.file_handler = logging.FileHandler(filename=self.logfile, encoding=self.encoding) # ????????
self.set_log() # ????
self.connect_server()
self.is_send = None # ????????,????None,???????????
self.local_file = None
self.remote_file = None
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def poll(self, timeout):
if timeout is not None:
# convert from seconds to milliseconds
timeout *= 1000
changes = self._poll.poll(timeout)
results = []
for fd, events in changes:
f = self._get_file_object(fd)
if events & (select.POLLIN | select.POLLPRI):
results.append((f, POLLER_EVENT_READ))
elif events & (select.POLLOUT):
results.append((f, POLLER_EVENT_WRITE))
elif events & (select.POLLHUP):
results.append((f, POLLER_EVENT_HUP))
elif events & (select.POLLERR | select.POLLNVAL):
results.append((f, POLLER_EVENT_ERROR))
return results
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except OSError as e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except OSError as e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def poll2(timeout=0.0, map=None):
# Use the poll() support added to the select module in Python 2.0
if map is None:
map = socket_map
if timeout is not None:
# timeout is in milliseconds
timeout = int(timeout*1000)
pollster = select.poll()
if map:
for fd, obj in list(map.items()):
flags = 0
if obj.readable():
flags |= select.POLLIN | select.POLLPRI
# accepting sockets should not be writable
if obj.writable() and not obj.accepting:
flags |= select.POLLOUT
if flags:
pollster.register(fd, flags)
r = pollster.poll(timeout)
for fd, flags in r:
obj = map.get(fd)
if obj is None:
continue
readwrite(obj, flags)
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except socket.error, e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
def readwrite(obj, flags):
try:
if flags & select.POLLIN:
obj.handle_read_event()
if flags & select.POLLOUT:
obj.handle_write_event()
if flags & select.POLLPRI:
obj.handle_expt_event()
if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
obj.handle_close()
except OSError as e:
if e.args[0] not in _DISCONNECTED:
obj.handle_error()
else:
obj.handle_close()
except _reraised_exceptions:
raise
except:
obj.handle_error()
libmilter.py 文件源码
项目:sipxecs-voicemail-transcription
作者: andrewsauder
项目源码
文件源码
阅读 26
收藏 0
点赞 0
评论 0
def __init__(self , sockstr , protocol , opts=0 , listenq=50 ,
sockChmod=0o666):
self.sock = None
self.opts = opts
self.protocol = protocol
self.listenq = int(listenq)
self.sockChmod = sockChmod
self.sockStr = sockstr
self.poll = select.poll()
self.emask = select.POLLIN | select.POLLPRI
self.regLock = threading.Lock()
self.sockMap = {}
self.protoMap = {}
self._close = threading.Event()
# }}}
# runAccepts() {{{
def poll2(timeout=0.0, map=None):
# Use the poll() support added to the select module in Python 2.0
if map is None:
map = socket_map
if timeout is not None:
# timeout is in milliseconds
timeout = int(timeout*1000)
pollster = select.poll()
if map:
for fd, obj in map.items():
flags = 0
if obj.readable():
flags |= select.POLLIN | select.POLLPRI
if obj.writable():
flags |= select.POLLOUT
if flags:
# Only check for exceptions if object was either readable
# or writable.
flags |= select.POLLERR | select.POLLHUP | select.POLLNVAL
pollster.register(fd, flags)
try:
r = pollster.poll(timeout)
except select.error, err:
if err.args[0] != EINTR:
raise
r = []
for fd, flags in r:
obj = map.get(fd)
if obj is None:
continue
readwrite(obj, flags)
def run(self):
poll = select.poll()
poll.register(self._read_fd, select.POLLIN | select.POLLPRI | select.POLLHUP)
poll.register(self._quit_pipe, select.POLLHUP)
reader = LineReader()
def process_line(readbytes):
reader.append(readbytes)
line = reader.readline()
if line is None:
return
if self._next_flag.is_set():
self._lines.put(line)
self._next_flag.clear()
reader.skiplines()
self._processed.set()
while True:
events = poll.poll()
if not events:
continue
for e in events:
fd, ev = e[0], e[1]
if fd == self._quit_pipe and (ev & select.POLLHUP) != 0:
# quit
return
elif fd == self._read_fd and (ev & (select.POLLIN | select.POLLPRI)) != 0:
# there are some data
readbytes = os.read(fd, 1024)
if not readbytes:
# EOF
return
process_line(readbytes)
elif fd == self._read_fd and (ev & select.POLLHUP) != 0:
# read_fd closed
return
else:
self.log(msg)
def event_str(event):
r = []
if event & select.POLLIN:
r.append('IN')
if event & select.POLLOUT:
r.append('OUT')
if event & select.POLLPRI:
r.append('PRI')
if event & select.POLLERR:
r.append('ERR')
if event & select.POLLHUP:
r.append('HUP')
if event & select.POLLNVAL:
r.append('NVAL')
return ' '.join(r)
def register(self, fd):
'''
Register a file decriptor with the spool.
'''
if not self.fds:
self.fds = select.poll()
mask = (
select.POLLERR | select.POLLHUP | select.POLLNVAL | select.POLLIN |
select.POLLPRI
)
self.fds.register(fd, mask)
def register(self, fd):
'''
Register a file decriptor with the spool.
'''
if not self.fds:
self.fds = select.poll()
mask = (
select.POLLERR | select.POLLHUP | select.POLLNVAL | select.POLLIN |
select.POLLPRI
)
self.fds.register(fd, mask)
def poll2(timeout=0.0, map=None):
# Use the poll() support added to the select module in Python 2.0
if map is None:
map = socket_map
if timeout is not None:
# timeout is in milliseconds
timeout = int(timeout*1000)
pollster = select.poll()
if map:
for fd, obj in map.items():
flags = 0
if obj.readable():
flags |= select.POLLIN | select.POLLPRI
# accepting sockets should not be writable
if obj.writable() and not obj.accepting:
flags |= select.POLLOUT
if flags:
# Only check for exceptions if object was either readable
# or writable.
flags |= select.POLLERR | select.POLLHUP | select.POLLNVAL
pollster.register(fd, flags)
try:
r = pollster.poll(timeout)
except select.error, err:
if err.args[0] != EINTR:
raise
r = []
for fd, flags in r:
obj = map.get(fd)
if obj is None:
continue
readwrite(obj, flags)
def _generate_lists(self):
self._pool_in = [ fd for fd, events in self._events.iteritems() if events & Poller.POLLIN ]
self._pool_out = [ fd for fd, events in self._events.iteritems() if events & Poller.POLLOUT ]
self._pool_pri = [ fd for fd, events in self._events.iteritems() if events & Poller.POLLPRI ]
def poll(self, timeout=0.01):
inn, out, pri = select.select( self._pool_in, self._pool_out, self._pool_pri, timeout )
for fd in inn:
self._callbacks.get(fd, DO_NOTHING)(fd, Poller.POLLIN)
for fd in out:
self._callbacks.get(fd, DO_NOTHING)(fd, Poller.POLLOUT)
for fd in pri:
self._callbacks.get(fd, DO_NOTHING)(fd, Poller.POLLPRI)
def __init__(self, ifname):
self.ifname = ifname
self.poll = select.epoll()
self.sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
socket.htons(pnet.ETH_P_ALL))
self.poll.register(self.sock, select.POLLIN | select.POLLPRI |
select.POLLHUP | select.POLLERR)
attach_filter(self.sock, bootp_filter())
self.sock.setblocking(0)
self.sock.bind((ifname, 3))
ifreq = get_ifreq(self.sock, ifname)
self.src = pnet.HWAddress(ifreq[18:24])