Esempio n. 1
0
File: pbot.py Progetto: jmw327/pbot
	fd = bot.connect()
	fds[fd] = bot
	epoll.register(fd, EPOLLFLAGS)

try:
	while keep_going:
		try:
			results = epoll.poll(config.EPOLL_TIMEOUT)
		except IOError as e:
			if e.errno == errno.EINTR and not keep_going:
				break
			raise
		flags = dict(results)
		ts = time.time()
		for fd, bot in fds.items():
			if flags.get(fd, 0) & select.EPOLLIN == select.EPOLLIN:
				bot.handle()
			else:
				if bot.check_disconnect(ts):
					del fds[fd]
					epoll.unregister(fd)
					fd = bot.connect()
					fds[fd] = bot
					epoll.register(fd, EPOLLFLAGS)
		log.flush()
	for b in fds.values():
		b.disconnect()
finally:
	epoll.close()
	log.close()