-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: urcd action: commit revision: path_from: revision_from: fb73bd4a9c1ae869e73548669d099f3f149296df: path_to: revision_to:
commit fb73bd4a9c1ae869e73548669d099f3f149296df Author: root <root@d3v11.ano> Date: Fri Mar 8 06:24:01 2013 +0000 [URC] urcd, urc2sd (more effecient poll) diff --git a/src/urc2sd.pyx b/src/urc2sd.pyx
--- a/src/urc2sd.pyx +++ b/src/urc2sd.pyx @@ -65,29 +65,21 @@ sock.bind(str(os.getpid())) sock.setblocking(0) sd=sock.fileno() -client_POLLIN=select.poll() -client_POLLIN.register(rd,3) - -server_POLLIN=select.poll() -server_POLLIN.register(sd,3) - -now = time.time() -def limit(): - if ((time.time() - now) > LIMIT): - global now - now = time.time() - return 0 - return 1 - -def client_poll(): - return len( client_POLLIN.poll(256- - (256*len( server_POLLIN.poll(0))) - )) - -def server_poll(): - return len( server_POLLIN.poll(256- - (256*len( client_POLLIN.poll(0))) - )) +# why doesn't python have pollfd.revents? +poll=select.poll() +poll.register(rd,select.POLLIN|select.POLLPRI) +poll.register(sd,select.POLLIN) +poll=poll.poll + +client_events=select.poll() +client_events.register(rd,select.POLLIN|select.POLLPRI) +def client_revents(): + return len(client_events.poll(0)) + +server_events=select.poll() +server_events.register(sd,select.POLLIN) +def server_revents(): + return len(server_events.poll(0)) def try_write(fd,buffer): try: @@ -113,7 +105,12 @@ try_write(wr,'USER '+nick+' '+nick+' '+nick+' :'+nick+'\n') try_write(wr,'NICK '+nick+'\n') while 1: - if (client_poll() and limit()): + + poll(-1) + + if (client_revents()): + + time.sleep(LIMIT) buffer = str() while 1: @@ -219,7 +216,9 @@ while 1: EOF() if EOF else EOF - while (server_poll() and limit()): + while (server_revents()): + + time.sleep(LIMIT) buffer = os.read(sd,1024) if not buffer: diff --git a/src/urcd.pyx b/src/urcd.pyx
--- a/src/urcd.pyx +++ b/src/urcd.pyx @@ -65,29 +65,21 @@ sock.bind(str(os.getpid())) sock.setblocking(0) sd=sock.fileno() -client_POLLIN=select.poll() -client_POLLIN.register(rd,3) - -server_POLLIN=select.poll() -server_POLLIN.register(sd,3) - -now = time.time() -def limit(): - if ((time.time() - now) > LIMIT): - global now - now = time.time() - return 0 - return 1 - -def client_poll(): - return len( client_POLLIN.poll(256- - (256*len( server_POLLIN.poll(0))) - )) - -def server_poll(): - return len( server_POLLIN.poll(256- - (256*len( client_POLLIN.poll(0))) - )) +# why doesn't python have pollfd.revents? +poll=select.poll() +poll.register(rd,select.POLLIN|select.POLLPRI) +poll.register(sd,select.POLLIN) +poll=poll.poll + +client_events=select.poll() +client_events.register(rd,select.POLLIN|select.POLLPRI) +def client_revents(): + return len(client_events.poll(0)) + +server_events=select.poll() +server_events.register(sd,select.POLLIN) +def server_revents(): + return len(server_events.poll(0)) def try_write(fd,buffer): try: @@ -96,7 +88,12 @@ def try_write(fd,buffer): sock_close(15,0) while 1: - if (client_poll() and limit()): + + poll(-1) + + if (client_revents()): + + time.sleep(LIMIT) buffer = str() while 1: @@ -367,7 +364,7 @@ while 1: buffer = buffer.replace('\\\\','\\') try_write(wr,':'+serv+' NOTICE '+Nick+' :ERROR: '+buffer+'\n') - while server_poll(): + while (server_revents()): buffer = os.read(sd,1024) if not buffer:
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 15:19:30 2024