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

Reply via email to