uasyncio: Log only if __debug__==True (i.e. no optimization).

pull/11/head
Paul Sokolovsky 2014-10-26 00:20:24 +03:00
rodzic cbaf0d3b57
commit 0fcb1daa81
1 zmienionych plików z 39 dodań i 20 usunięć

Wyświetl plik

@ -11,30 +11,36 @@ class EpollEventLoop(EventLoop):
self.poller = select.epoll(1) self.poller = select.epoll(1)
def add_reader(self, fd, cb, *args): def add_reader(self, fd, cb, *args):
log.debug("add_reader%s", (fd, cb, args)) if __debug__:
log.debug("add_reader%s", (fd, cb, args))
self.poller.register(fd, select.EPOLLIN, (cb, args)) self.poller.register(fd, select.EPOLLIN, (cb, args))
def remove_reader(self, fd): def remove_reader(self, fd):
log.debug("remove_reader(%s)", fd) if __debug__:
log.debug("remove_reader(%s)", fd)
self.poller.unregister(fd) self.poller.unregister(fd)
def add_writer(self, fd, cb, *args): def add_writer(self, fd, cb, *args):
log.debug("add_writer%s", (fd, cb, args)) if __debug__:
log.debug("add_writer%s", (fd, cb, args))
self.poller.register(fd, select.EPOLLOUT, (cb, args)) self.poller.register(fd, select.EPOLLOUT, (cb, args))
def remove_writer(self, fd): def remove_writer(self, fd):
log.debug("remove_writer(%s)", fd) if __debug__:
log.debug("remove_writer(%s)", fd)
self.poller.unregister(fd) self.poller.unregister(fd)
def wait(self, delay): def wait(self, delay):
log.debug("epoll.wait(%d)", delay) if __debug__:
log.debug("epoll.wait(%d)", delay)
if delay == -1: if delay == -1:
res = self.poller.poll(-1) res = self.poller.poll(-1)
else: else:
res = self.poller.poll(int(delay * 1000)) res = self.poller.poll(int(delay * 1000))
log.debug("epoll result: %s", res) #log.debug("epoll result: %s", res)
for cb, ev in res: for cb, ev in res:
log.debug("Calling IO callback: %s%s", cb[0], cb[1]) if __debug__:
log.debug("Calling IO callback: %s%s", cb[0], cb[1])
cb[0](*cb[1]) cb[0](*cb[1])
@ -59,9 +65,11 @@ class StreamReader:
return res return res
def readline(self): def readline(self):
log.debug("StreamReader.readline()") if __debug__:
log.debug("StreamReader.readline()")
s = yield IORead(self.s) s = yield IORead(self.s)
log.debug("StreamReader.readline(): after IORead: %s", s) if __debug__:
log.debug("StreamReader.readline(): after IORead: %s", s)
while True: while True:
res = self.s.readline() res = self.s.readline()
if res is not None: if res is not None:
@ -69,7 +77,8 @@ class StreamReader:
log.warn("Empty read") log.warn("Empty read")
if not res: if not res:
yield IOReadDone(self.s) yield IOReadDone(self.s)
log.debug("StreamReader.readline(): res: %s", res) if __debug__:
log.debug("StreamReader.readline(): res: %s", res)
return res return res
def __repr__(self): def __repr__(self):
@ -88,21 +97,25 @@ class StreamWriter:
# to return immediately (which means it has to buffer all the # to return immediately (which means it has to buffer all the
# data), this method is a coroutine. # data), this method is a coroutine.
sz = len(buf) sz = len(buf)
log.debug("StreamWriter.awrite(): spooling %d bytes", sz) if __debug__:
log.debug("StreamWriter.awrite(): spooling %d bytes", sz)
while True: while True:
res = self.s.write(buf) res = self.s.write(buf)
# If we spooled everything, return immediately # If we spooled everything, return immediately
if res == sz: if res == sz:
log.debug("StreamWriter.awrite(): completed spooling %d bytes", res) if __debug__:
log.debug("StreamWriter.awrite(): completed spooling %d bytes", res)
return return
if res is None: if res is None:
res = 0 res = 0
log.debug("StreamWriter.awrite(): spooled partial %d bytes", res) if __debug__:
log.debug("StreamWriter.awrite(): spooled partial %d bytes", res)
assert res < sz assert res < sz
buf = buf[res:] buf = buf[res:]
sz -= res sz -= res
s = yield IOWrite(self.s) s = yield IOWrite(self.s)
log.debug("StreamWriter.awrite(): can write more") if __debug__:
log.debug("StreamWriter.awrite(): can write more")
def close(self): def close(self):
yield IOWriteDone(self.s) yield IOWriteDone(self.s)
@ -113,7 +126,8 @@ class StreamWriter:
def open_connection(host, port): def open_connection(host, port):
log.debug("open_connection(%s, %s)", host, port) if __debug__:
log.debug("open_connection(%s, %s)", host, port)
s = _socket.socket() s = _socket.socket()
s.setblocking(False) s.setblocking(False)
ai = _socket.getaddrinfo(host, port) ai = _socket.getaddrinfo(host, port)
@ -123,9 +137,11 @@ def open_connection(host, port):
except OSError as e: except OSError as e:
if e.args[0] != errno.EINPROGRESS: if e.args[0] != errno.EINPROGRESS:
raise raise
log.debug("open_connection: After connect") if __debug__:
log.debug("open_connection: After connect")
s = yield IOWrite(s) s = yield IOWrite(s)
log.debug("open_connection: After iowait: %s", s) if __debug__:
log.debug("open_connection: After iowait: %s", s)
return StreamReader(s), StreamWriter(s) return StreamReader(s), StreamWriter(s)
@ -140,10 +156,13 @@ def start_server(client_coro, host, port):
s.bind(addr) s.bind(addr)
s.listen(10) s.listen(10)
while True: while True:
log.debug("start_server: Before accept") if __debug__:
log.debug("start_server: Before accept")
yield IORead(s) yield IORead(s)
log.debug("start_server: After iowait") if __debug__:
log.debug("start_server: After iowait")
s2, client_addr = s.accept() s2, client_addr = s.accept()
s2.setblocking(False) s2.setblocking(False)
log.debug("start_server: After accept: %s", s2) if __debug__:
log.debug("start_server: After accept: %s", s2)
yield client_coro(StreamReader(s2), StreamWriter(s2)) yield client_coro(StreamReader(s2), StreamWriter(s2))