twisted.internet.interfaces.IReactorSocket(Interface) interface documentationtwisted.internet.interfaces
(View In Hierarchy)
Known implementations: twisted.internet.posixbase.PosixReactorBase, twisted.internet.testing.MemoryReactor, twisted.internet.testing.RaisingMemoryReactor
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. | 
Add an existing listening SOCK_STREAM socket to the reactor to monitor for new connections to accept and handle.
| 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 adoptStreamPortreturns. (type:int) | 
| addressFamily | The address family (or domain) of the socket. For example, socket.AF_INET6. | |
| factory | A ServerFactoryinstance 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. | |
Add an existing connected SOCK_STREAM socket to the reactor to monitor for data.
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 adoptStreamConnectionreturns. (type:int) | 
| addressFamily | The address family (or domain) of the socket. For example, socket.AF_INET6. | |
| factory | A ServerFactoryinstance 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 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 adoptDatagramPortreturns. (type:int) | 
| addressFamily | The address family or domain of the socket. For example, socket.AF_INET6. (type:int) | |
| protocol | A DatagramProtocolinstance to connect to a UDP transport. (type:DatagramProtocol) | |
| maxPacketSize | The maximum packet size to accept. (type: int) | |
| 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. | |