Part of twisted.internet.interfaces View Source View In Hierarchy
Known implementations: twisted.internet.posixbase.PosixReactorBase
Methods which allow a reactor to use externally created sockets.
For example, to use adoptStreamPort to implement behavior 
equivalent to that of IReactorTCP.listenTCP,
you might write code like this:
   from socket import SOMAXCONN, AF_INET, SOCK_STREAM, socket
   portSocket = socket(AF_INET, SOCK_STREAM)
   # Set FD_CLOEXEC on port, left as an exercise.  Then make it into a
   # non-blocking listening port:
   portSocket.setblocking(False)
   portSocket.bind(('192.168.1.2', 12345))
   portSocket.listen(SOMAXCONN)
   # Now have the reactor use it as a TCP port
   port = reactor.adoptStreamPort(
       portSocket.fileno(), AF_INET, YourFactory())
   # portSocket itself is no longer necessary, and needs to be cleaned
   # up by us.
   portSocket.close()
   # Whenever the server is no longer needed, stop it as usual.
   stoppedDeferred = port.stopListening()
Another potential use is to inherit a listening descriptor from a parent process (for example, systemd or launchd), or to receive one over a UNIX domain socket.
Some plans for extending this interface exist. See:
| Method | adoptStreamPort | Add an existing listening SOCK_STREAM socket to the reactor to monitor for new connections to accept and handle. | 
| Method | adoptStreamConnection | Add an existing connected SOCK_STREAM socket to the reactor to monitor for data. | 
| Method | adoptDatagramPort | Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness. | 
| Parameters | fileDescriptor | A file descriptor associated with a socket which is already bound to an 
address and marked as listening.  The socket must be set non-blocking.  Any
additional flags (for example, close-on-exec) must also be set by 
application code.  Application code is responsible for closing the file 
descriptor, which may be done as soon as adoptStreamPort 
returns. (type: int) | 
| addressFamily | The address family (or domain) of the socket. For example, socket.AF_INET6. | |
| factory | A ServerFactory
instance to use to create new protocols to handle connections accepted via 
this socket. | |
| Returns | An object providing IListeningPort. | |
| Raises | twisted.internet.error.UnsupportedAddressFamily | If the given address family is not supported by this reactor, or not supported with the given socket type. | 
| twisted.internet.error.UnsupportedSocketType | If the given socket type is not supported by this reactor, or not supported with the given socket type. | |
Note that the given factory won't have its startFactory and
stopFactory methods called, as there is no sensible time to 
call them in this situation.
| Parameters | fileDescriptor | A file descriptor associated with a socket which is already connected.  The
socket must be set non-blocking.  Any additional flags (for example, 
close-on-exec) must also be set by application code.  Application code is 
responsible for closing the file descriptor, which may be done as soon as 
adoptStreamConnection returns. (type: int) | 
| addressFamily | The address family (or domain) of the socket. For example, socket.AF_INET6. | |
| factory | A ServerFactory
instance to use to create a new protocol to handle the connection via this 
socket. | |
| Raises | UnsupportedAddressFamily | If the given address family is not supported by this reactor, or not supported with the given socket type. | 
| UnsupportedSocketType | If the given socket type is not supported by this reactor, or not supported with the given socket type. | 
Add an existing listening I{SOCK_DGRAM} socket to the reactor to
monitor for read and write readiness.
@param fileDescriptor: A file descriptor associated with a socket which
    is already bound to an address and marked as listening.  The socket
    must be set non-blocking.  Any additional flags (for example,
    close-on-exec) must also be set by application code.  Application
    code is responsible for closing the file descriptor, which may be
    done as soon as C{adoptDatagramPort} returns.
@type fileDescriptor: C{int}
@param addressFamily: The address family (or I{domain}) of the socket.
    For example, L{socket.AF_INET6}.
@type addressFamily: C{int}
@param protocol: A L{DatagramProtocol} instance to connect to
    a UDP transport.
@type protocol: L{DatagramProtocol}
@param maxPacketSize: The maximum packet size to accept.
@type maxPacketSize: C{int}
@return: An object providing L{IListeningPort}.
@raise L{UnsupportedAddressFamily}: If the given address family is not
    supported by this reactor, or not supported with the given socket
    type.
@raise UnsupportedSocketType: If the given socket type is not supported
    by this reactor, or not supported with the given socket type.