Update of /cvsroot/freevo/freevo/src/util
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28546/util
Modified Files:
fsocket.py
Log Message:
add support for basic fb
Index: fsocket.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/util/fsocket.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** fsocket.py 1 Dec 2004 15:11:24 -0000 1.1
--- fsocket.py 18 Dec 2004 13:28:26 -0000 1.2
***************
*** 1,4 ****
--- 1,6 ----
+ import os
import socket
import cStringIO
+ import fcntl
import notifier
***************
*** 6,10 ****
def __init__(self, socket):
self.socket = socket
! self.socket.setblocking(0)
self.closed = False
self.__read_nf = False
--- 8,15 ----
def __init__(self, socket):
self.socket = socket
! if isinstance(self.socket, int):
! fcntl.fcntl(self.socket, fcntl.F_SETFL, os.O_NONBLOCK)
! else:
! self.socket.setblocking(0)
self.closed = False
self.__read_nf = False
***************
*** 19,22 ****
--- 24,29 ----
Send data to the client
"""
+ if self.closed:
+ return
if not self.__write_nf:
notifier.addSocket(self.socket, self.__write_socket,
***************
*** 29,32 ****
--- 36,47 ----
+ def flush(self):
+ """
+ Flush the output
+ """
+ while self.__write_nf:
+ notifier.step(True, False)
+
+
def writefd(self, fd):
"""
***************
*** 46,50 ****
close everything
"""
! self.socket.close()
self.out_buffer.close()
self.in_buffer.close()
--- 61,69 ----
close everything
"""
! self.closed = True
! if isinstance(self.socket, int):
! os.close(self.socket)
! else:
! self.socket.close()
self.out_buffer.close()
self.in_buffer.close()
***************
*** 58,63 ****
def close(self):
self.closed = True
! if not self.out_buffer.getvalue():
# if need no more sending:
self.__close()
--- 77,84 ----
def close(self):
+ if self.closed:
+ return
self.closed = True
! if self.out_buffer.getvalue():
# if need no more sending:
self.__close()
***************
*** 76,80 ****
def __read_socket(self, s):
! data = self.socket.recv(1000)
if len(data) == 0:
self.closed = True
--- 97,104 ----
def __read_socket(self, s):
! if isinstance(self.socket, int):
! data = os.read(self.socket, 1000)
! else:
! data = self.socket.recv(1000)
if len(data) == 0:
self.closed = True
***************
*** 89,93 ****
notifier.removeSocket(self.socket)
self.__callback(self)
! return False
return True
--- 113,118 ----
notifier.removeSocket(self.socket)
self.__callback(self)
! # FIXME: True? It's a notifier bug here!
! return True
return True
***************
*** 106,110 ****
return False
try:
! self.socket.send(data)
return True
except socket.error, e:
--- 131,138 ----
return False
try:
! if isinstance(self.socket, int):
! os.write(self.socket, data)
! else:
! self.socket.send(data)
return True
except socket.error, e:
***************
*** 113,118 ****
self.__close()
return False
!
!
def readline(self, *args, **kwargs):
return self.in_buffer.readline(*args, **kwargs)
--- 141,149 ----
self.__close()
return False
! except OSError:
! # fd closed
! self.__close()
! return False
!
def readline(self, *args, **kwargs):
return self.in_buffer.readline(*args, **kwargs)
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog