-- 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:

git.thebackupbox.net

urcd

git://git.thebackupbox.net/urcd

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

index 6a4adfa288fc1fb3d2edc4cb1da8dc2efaa0b4cd..

index ..7fafcc2659bf5a5c428855a26099bae0ec73c845 100644

--- 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

index a2536507216542a4e4564b91f465a3dc5dc49a89..

index ..ce85ac41fd63e64e9c2502a63f9dd83640da4576 100644

--- 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