[CalendarServer-changes] [11994] CalendarServer/trunk/twext/internet/sendfdport.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:20:06 PDT 2014


Revision: 11994
          http://trac.calendarserver.org//changeset/11994
Author:   wsanchez at apple.com
Date:     2013-11-22 12:27:15 -0800 (Fri, 22 Nov 2013)
Log Message:
-----------
Add removeSocket()

Modified Paths:
--------------
    CalendarServer/trunk/twext/internet/sendfdport.py

Modified: CalendarServer/trunk/twext/internet/sendfdport.py
===================================================================
--- CalendarServer/trunk/twext/internet/sendfdport.py	2013-11-22 20:24:12 UTC (rev 11993)
+++ CalendarServer/trunk/twext/internet/sendfdport.py	2013-11-22 20:27:15 UTC (rev 11994)
@@ -115,12 +115,13 @@
     @type dispatcher: L{InheritedSocketDispatcher}
     """
 
-    def __init__(self, dispatcher, skt, status):
+    def __init__(self, dispatcher, inSkt, outSkt, status):
         FileDescriptor.__init__(self, dispatcher.reactor)
         self.status = status
         self.dispatcher = dispatcher
-        self.skt = skt          # XXX needs to be set non-blocking by somebody
-        self.fileno = skt.fileno
+        self.inSkt = inSkt
+        self.outSkt = outSkt   # XXX needs to be set non-blocking by somebody
+        self.fileno = outSkt.fileno
         self.outgoingSocketQueue = []
         self.pendingCloseSocketQueue = []
 
@@ -138,7 +139,7 @@
         Receive a status / health message and record it.
         """
         try:
-            data, _ignore_flags, _ignore_ancillary = recvmsg(self.skt.fileno())
+            data, _ignore_flags, _ignore_ancillary = recvmsg(self.outSkt.fileno())
         except SocketError, se:
             if se.errno not in (EAGAIN, ENOBUFS):
                 raise
@@ -155,7 +156,7 @@
         while self.outgoingSocketQueue:
             skt, desc = self.outgoingSocketQueue.pop(0)
             try:
-                sendfd(self.skt.fileno(), skt.fileno(), desc)
+                sendfd(self.outSkt.fileno(), skt.fileno(), desc)
             except SocketError, se:
                 if se.errno in (EAGAIN, ENOBUFS):
                     self.outgoingSocketQueue.insert(0, (skt, desc))
@@ -341,14 +342,27 @@
         i, o = socketpair()
         i.setblocking(False)
         o.setblocking(False)
-        a = _SubprocessSocket(self, o, self.statusWatcher.initialStatus())
+        a = _SubprocessSocket(self, i, o, self.statusWatcher.initialStatus())
         self._subprocessSockets.append(a)
         if self._isDispatching:
             a.startReading()
         return i
 
 
+    def removeSocket(self, skt):
+        """
+        Removes a previously added socket from the pool of sockets being used
+        for transmitting file descriptors to child processes.
+        """
+        for a in self._subprocessSockets:
+            if a.inSkt == skt:
+                self._subprocessSockets.remove(a)
+                break
+        else:
+            raise ValueError("Unknown socket: {0}".format(skt))
 
+
+
 class InheritedPort(FileDescriptor, object):
     """
     An L{InheritedPort} is an L{IReadDescriptor}/L{IWriteDescriptor} created in
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/e05c99ac/attachment.html>


More information about the calendarserver-changes mailing list