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