Ϫf dZddlmZddlmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZmZddlmZergddlmZ ddlmZmZddlmZdd l m!Z!m"Z"m#Z#dd l$m%Z%dd l&m'Z'm(Z(m)Z)m*Z*m+Z+dd l,m-Z-dd l.m/Z/m0Z0ddl1m2Z2ddl3m4Z4e4jjrddl6m7Z7neZ7GddeZ8GddeZ9GddeZ:GddeZ;GddeZ<GddeZ=Gdde:Z>Gdd eZ?Gd!d"eZ@Gd#d$eZAGd%d&eZBGd'd(eZCGd)d*eZDGd+d,eZEGd-d.eZFGd/d0eZGGd1d2eZHGd3d4eZIGd5d6eZJGd7d8eZKGd9d:eJeKZLGd;deZNGd?d@eZOGdAdBeZPGdCdDeZQGdEdFeZRGdGdHeZSGdIdJeSZTGdKdLeTZUGdMdNeTZVGdOdPeUeVZWGdQdReZXGdSdTeZYGdUdVeZZGdWdXeZ[GdYdZe[Z\Gd[d\e[Z]Gd]d^eZ^Gd_d`eZ_GdadbeZ`GdcddeZaGdedfeZbGdgdheZcGdidjeZdGdkdledZeGdmdnedZfGdodpeZgGdqdreZhGdsdteZiGdudveZjGdwdxeeZkGdydzeeZlGd{d|elZmGd}d~eZnGddeZoGddedZpGddeZqGddeZrGddeZsGddeZtGddeZuGddeZvGddeZwGddeZxGddeZyGddeZzy#e$rexZZYHwxYw)z> Interface documentation. Maintainer: Itamar Shtull-Trauring ) annotations) TYPE_CHECKINGAnyAnyStrCallableIterableListMappingOptionalSequenceTupleTypeUnion) Attribute Interface)Failure) AddressFamily) ConnectionContext)FileDescriptor) IPv4Address IPv6Address UNIXAddress)Deferred) ClientFactoryConnectedDatagramProtocolDatagramProtocolFactory ServerFactory)ClientContextFactory)QueryRRHeader)TLSMemoryBIOProtocol)platform) ThreadPoolceZdZdZy)IAddresszr An address, e.g. a TCP C{(host, port)}. Default implementations are in L{twisted.internet.address}. N__name__ __module__ __qualname____doc__=/usr/lib/python3/dist-packages/twisted/internet/interfaces.pyr'r'>sr.r'c0eZdZdZddZddZddZddZy) IConnectorzu Object used to interface between connections and protocols. Each L{IConnector} manages one connection. cy)z- Stop attempting to connect. Nr-r-r.r/stopConnectingzIConnector.stopConnectingPr.cy)z Disconnect regardless of the connection state. If we are connected, disconnect, if we are trying to connect, stop trying. Nr-r-r.r/ disconnectzIConnector.disconnectUr4r.cy)z3 Try to connect to remote address. Nr-r-r.r/connectzIConnector.connect]r4r.cy)zy Return destination this will try to connect to. @return: An object which provides L{IAddress}. Nr-r-r.r/getDestinationzIConnector.getDestinationbr4r.NreturnNoner<r')r)r*r+r,r3r6r8r:r-r.r/r1r1Is     r.r1ceZdZdddZy)IResolverSimplecy)a Resolve the domain name C{name} into an IP address. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: The callback of the Deferred that is returned will be passed a string that represents the IP address of the specified name, or the errback will be called if the lookup times out. If multiple types of address records are associated with the name, A6 records will be returned in preference to AAAA records, which will be returned in preference to A records. If there are multiple records of the type to be returned, one will be selected at random. @raise twisted.internet.defer.TimeoutError: Raised (asynchronously) if the name cannot be resolved within the specified timeout period. Nr-nametimeouts r/ getHostByNamezIResolverSimple.getHostByNamekr4r.N)r-rCstrrD Sequence[int]r<z'Deferred[str]')r)r*r+rEr-r.r/r@r@js r.r@c(eZdZdZedZddZy)IHostResolutionz An L{IHostResolution} represents represents an in-progress recursive query for a DNS name. @since: Twisted 17.1.0 zB L{unicode}; the name of the host being resolved. cy)z; Stop the hostname resolution in progress. Nr-r-r.r/cancelzIHostResolution.cancelr4r.Nr;)r)r*r+r,rrCrLr-r.r/rJrJs   D  r.rJc(eZdZdZddZddZddZy) IResolutionReceiverz An L{IResolutionReceiver} receives the results of a hostname resolution in progress, initiated by an L{IHostnameResolver}. @since: Twisted 17.1.0 cy)zk A hostname resolution began. @param resolutionInProgress: an L{IHostResolution}. Nr-)resolutionInProgresss r/resolutionBeganz#IResolutionReceiver.resolutionBeganr4r.cy)a An internet address. This is called when an address for the given name is discovered. In the current implementation this practically means L{IPv4Address} or L{IPv6Address}, but implementations of this interface should be lenient to other types being passed to this interface as well, for future-proofing. @param address: An address object. Nr-)addresss r/addressResolvedz#IResolutionReceiver.addressResolvedr4r.cy)z Resolution has completed; no further addresses will be relayed to L{IResolutionReceiver.addressResolved}. Nr-r-r.r/resolutionCompletez&IResolutionReceiver.resolutionCompleter4r.N)rPrJr<r=)rSr'r<r=r;)r)r*r+r,rQrTrVr-r.r/rNrNs    r.rNc6eZdZdZ d ddZy)IHostnameResolverz An L{IHostnameResolver} can resolve a host name and port number into a series of L{IAddress} objects. @since: Twisted 17.1.0 Ncy)a Initiate a hostname resolution. @param resolutionReceiver: an object that will receive each resolved address as it arrives. @param hostName: The name of the host to resolve. If this contains non-ASCII code points, they will be converted to IDNA first. @param portNumber: The port number that the returned addresses should include. @param addressTypes: An iterable of implementors of L{IAddress} that are acceptable values for C{resolutionReceiver} to receive to its L{addressResolved }. In practice, this means an iterable containing L{twisted.internet.address.IPv4Address}, L{twisted.internet.address.IPv6Address}, both, or neither. @param transportSemantics: A string describing the semantics of the transport; either C{'TCP'} for stream-oriented transports or C{'UDP'} for datagram-oriented; see L{twisted.internet.address.IPv6Address.type} and L{twisted.internet.address.IPv4Address.type}. @return: The resolution in progress. Nr-)resolutionReceiverhostName portNumber addressTypestransportSemanticss r/resolveHostNamez!IHostnameResolver.resolveHostNamer4r.)rNTCP) rZrNr[rGr\intr]z"Optional[Sequence[Type[IAddress]]]r^rGr<rJ)r)r*r+r,r_r-r.r/rXrXsO;?"'  /   9      r.rXceZdZ ddZ ddZ ddZ ddZ ddZ ddZ ddZ ddZ dd Z dd Z dd Z dd Z dd Z ddZ ddZ ddZ ddZ ddZ ddZ ddZ ddZ ddZ ddZ ddZy) IResolvercy)a& Dispatch C{query} to the method which can handle its type. @param query: The DNS query being issued, to which a response is to be generated. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-)queryrDs r/rezIResolver.queryr4r.cy)a Perform an A record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupAddresszIResolver.lookupAddressr4r.cy)a Perform an A6 record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupAddress6zIResolver.lookupAddress6r4r.cy)a Perform an AAAA record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupIPV6AddresszIResolver.lookupIPV6Addressr4r.cy)a Perform an MX record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupMailExchangezIResolver.lookupMailExchange-r4r.cy)a Perform an NS record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupNameserverszIResolver.lookupNameservers@r4r.cy)a Perform a CNAME record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupCanonicalNamezIResolver.lookupCanonicalNameSr4r.cy)a Perform an MB record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupMailBoxzIResolver.lookupMailBoxfr4r.cy)a Perform an MG record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupMailGroupzIResolver.lookupMailGroupyr4r.cy)a Perform an MR record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupMailRenamezIResolver.lookupMailRenamer4r.cy)a Perform a PTR record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupPointerzIResolver.lookupPointerr4r.cy)a Perform an SOA record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupAuthorityzIResolver.lookupAuthorityr4r.cy)a Perform a NULL record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupNullzIResolver.lookupNullr4r.cy)a Perform a WKS record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupWellKnownServicesz!IResolver.lookupWellKnownServicesr4r.cy)a Perform a HINFO record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupHostInfozIResolver.lookupHostInfor4r.cy)a Perform an MINFO record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupMailboxInfozIResolver.lookupMailboxInfor4r.cy)a Perform a TXT record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupTextzIResolver.lookupTextr4r.cy)a Perform an RP record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupResponsibilityzIResolver.lookupResponsibility$r4r.cy)a Perform an AFSDB record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupAFSDatabasezIResolver.lookupAFSDatabase7r4r.cy)a Perform an SRV record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupServicezIResolver.lookupServiceJr4r.cy)a Perform an ALL_RECORD lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupAllRecordszIResolver.lookupAllRecords]r4r.cy)a Perform a SPF record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupSenderPolicyzIResolver.lookupSenderPolicypr4r.cy)a Perform a NAPTR record lookup. @param name: DNS name to resolve. @param timeout: Number of seconds after which to reissue the query. When the last timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second element of the tuple gives authorities. The third element of the tuple gives additional information. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/lookupNamingAuthorityPointerz&IResolver.lookupNamingAuthorityPointerr4r.cy)aT Perform an AXFR record lookup. NB This is quite different from other DNS requests. See U{http://cr.yp.to/djbdns/axfr-notes.html} for more information. NB Unlike other C{lookup*} methods, the timeout here is not a list of ints, it is a single int. @param name: DNS name to resolve. @param timeout: When this timeout expires, the query is considered failed. @return: A L{Deferred} which fires with a three-tuple of lists of L{twisted.names.dns.RRHeader} instances. The first element of the tuple gives answers. The second and third elements are always empty. The L{Deferred} may instead fail with one of the exceptions defined in L{twisted.names.error} or with C{NotImplementedError}. Nr-rBs r/ lookupZonezIResolver.lookupZoner4r.N)rez'Query'rDrHr</'Deferred[Tuple[RRHeader, RRHeader, RRHeader]]')rCrGrDrHr<r)r)r*r+rergrirkrmrorqrsrurwryr{r}rrrrrrrrrrrr-r.r/rcrcs  !. 8 (  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 &  ) 8 r.rccHeZdZ ddZ ddZy) IReactorTCPcy)a6 Connects a given protocol factory to the given numeric TCP/IP port. @param port: a port number on which to listen @param factory: a L{twisted.internet.protocol.ServerFactory} instance @param backlog: size of the listen queue @param interface: The local IPv4 or IPv6 address to which to bind; defaults to '', ie all IPv4 addresses. To bind to all IPv4 and IPv6 addresses, you must call this method twice. @return: an object that provides L{IListeningPort}. @raise CannotListenError: as defined here L{twisted.internet.error.CannotListenError}, if it cannot listen on this port (e.g., it cannot bind to the required port number) Nr-)portfactorybacklog interfaces r/ listenTCPzIReactorTCP.listenTCPr4r.cy)a Connect a TCP client. @param host: A hostname or an IPv4 or IPv6 address literal. @param port: a port number @param factory: a L{twisted.internet.protocol.ClientFactory} instance @param timeout: number of seconds to wait before assuming the connection has failed. @param bindAddress: a (host, port) tuple of local address to bind to, or None. @return: An object which provides L{IConnector}. This connector will call various callbacks on the factory when a connection is made, failed, or lost - see L{ClientFactory} docs for details. Nr-)hostrrrD bindAddresss r/ connectTCPzIReactorTCP.connectTCPr4r.N) rrar'ServerFactory'rrarrGr<'IListeningPort') rrGrrar'ClientFactory'rDfloatrOptional[Tuple[str, int]]r<r1)r)r*r+rrr-r.r/rrsl  + 69 FI  *   !   /    r.rcPeZdZ ddZ ddZy) IReactorSSLcy)aQ Connect a client Protocol to a remote SSL socket. @param host: a host name @param port: a port number @param factory: a L{twisted.internet.protocol.ClientFactory} instance @param contextFactory: a L{twisted.internet.ssl.ClientContextFactory} object. @param timeout: number of seconds to wait before assuming the connection has failed. @param bindAddress: a (host, port) tuple of local address to bind to, or L{None}. @return: An object which provides L{IConnector}. Nr-)rrrcontextFactoryrDrs r/ connectSSLzIReactorSSL.connectSSLr4r.cy)a Connects a given protocol factory to the given numeric TCP/IP port. The connection is a SSL one, using contexts created by the context factory. @param port: a port number on which to listen @param factory: a L{twisted.internet.protocol.ServerFactory} instance @param contextFactory: an implementor of L{IOpenSSLContextFactory} @param backlog: size of the listen queue @param interface: the hostname to bind to, defaults to '' (all) Nr-)rrrrrs r/ listenSSLzIReactorSSL.listenSSLr4r.N)rrGrrarrrz'ClientContextFactory'rDrrrr<r1) rrarrrz'IOpenSSLContextFactory'rrarrGr<r)r)r*r+rrr-r.r/rrs   ! /    /    .    1       r.rcLeZdZdZ ddZ ddZy) IReactorUNIXz UNIX socket methods. cy)a1 Connect a client protocol to a UNIX socket. @param address: a path to a unix socket on the filesystem. @param factory: a L{twisted.internet.protocol.ClientFactory} instance @param timeout: number of seconds to wait before assuming the connection has failed. @param checkPID: if True, check for a pid file to verify that a server is listening. If C{address} is a Linux abstract namespace path, this must be C{False}. @return: An object which provides L{IConnector}. Nr-)rSrrDcheckPIDs r/ connectUNIXzIReactorUNIX.connectUNIXr4r.cy)a Listen on a UNIX socket. @param address: a path to a unix socket on the filesystem. @param factory: a L{twisted.internet.protocol.Factory} instance. @param backlog: number of connections to allow in backlog. @param mode: The mode (B{not} umask) to set on the unix socket. See platform specific documentation for information about how this might affect connection attempts. @param wantPID: if True, create a pidfile for the socket. If C{address} is a Linux abstract namespace path, this must be C{False}. @return: An object which provides L{IListeningPort}. Nr-)rSrrmodewantPIDs r/ listenUNIXzIReactorUNIX.listenUNIX#r4r.N) rSrGrrrDrrboolr<r1) rSrGrz 'Factory'rrarrarrr<r)r)r*r+r,rrr-r.r/rr si  . 9> JN  "  ( 36 >A LP  r.rcLeZdZdZ ddZ ddZy)IReactorUNIXDatagramz' Datagram UNIX socket methods. cy)aQ Connect a client protocol to a datagram UNIX socket. @param address: a path to a unix socket on the filesystem. @param protocol: a L{twisted.internet.protocol.ConnectedDatagramProtocol} instance @param maxPacketSize: maximum packet size to accept @param mode: The mode (B{not} umask) to set on the unix socket. See platform specific documentation for information about how this might affect connection attempts. @param bindAddress: address to bind to @return: An object which provides L{IConnector}. Nr-)rSprotocol maxPacketSizerrs r/connectUNIXDatagramz(IReactorUNIXDatagram.connectUNIXDatagram;r4r.cy)a  Listen on a datagram UNIX socket. @param address: a path to a unix socket on the filesystem. @param protocol: a L{twisted.internet.protocol.DatagramProtocol} instance. @param maxPacketSize: maximum packet size to accept @param mode: The mode (B{not} umask) to set on the unix socket. See platform specific documentation for information about how this might affect connection attempts. @return: An object which provides L{IListeningPort}. Nr-)rSrrrs r/listenUNIXDatagramz'IReactorUNIXDatagram.listenUNIXDatagramQr4r.N) rSrGrz'ConnectedDatagramProtocol'rrarrarrr<r1) rSrGr'DatagramProtocol'rrarrar<r)r)r*r+r,rrr-r.r/rr6sq  -    /    ,  2 CF NQ  r.rc eZdZdZddZddZy)IReactorWin32Eventsz3 Win32 Event API methods @since: 10.2 cy)al Add a new win32 event to the event loop. @param event: a Win32 event object created using win32event.CreateEvent() @param fd: an instance of L{twisted.internet.abstract.FileDescriptor} @param action: a string that is a method name of the fd instance. This method is called in response to the event. Nr-)eventfdactions r/addEventzIReactorWin32Events.addEventir4r.cy)z Remove an event. @param event: a Win32 event object added using L{IReactorWin32Events.addEvent} @return: None Nr-)rs r/ removeEventzIReactorWin32Events.removeEventsr4r.N)robjectrz'FileDescriptor'rrGr<r=)rrr<r=)r)r*r+r,rrr-r.r/rrbs   r.rc,eZdZdZ ddZy) IReactorUDPz UDP socket methods. cy)a Connects a given L{DatagramProtocol} to the given numeric UDP port. @param port: A port number on which to listen. @param protocol: A L{DatagramProtocol} instance which will be connected to the given C{port}. @param interface: The local IPv4 or IPv6 address to which to bind; defaults to '', ie all IPv4 addresses. @param maxPacketSize: The maximum packet size to accept. @return: object which provides L{IListeningPort}. Nr-)rrrrs r/ listenUDPzIReactorUDP.listenUDPr4r.N) rrarrrrGrrar<r)r)r*r+r,rr-r.r/rr}s4  / } to the given numeric UDP port. @param listenMultiple: If set to True, allows multiple sockets to bind to the same address and port number at the same time. @returns: An object which provides L{IListeningPort}. @see: L{twisted.internet.interfaces.IMulticastTransport} @see: U{http://twistedmatrix.com/documents/current/core/howto/udp.html} Nr-)rrrrlistenMultiples r/listenMulticastz!IReactorMulticast.listenMulticastr4r.N) rrarrrrGrrarrr<r)r)r*r+r,rr-r.r/rrsD  $        r.rc\eZdZdZ ddZ ddZ ddZy) IReactorSocketa Methods which allow a reactor to use externally created sockets. For example, to use C{adoptStreamPort} to implement behavior equivalent to that of L{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: - U{http://twistedmatrix.com/trac/ticket/6594}: AF_UNIX SOCK_DGRAM ports cy)a Add an existing listening I{SOCK_STREAM} socket to the reactor to monitor for new connections to accept and handle. @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{adoptStreamPort} returns. @param addressFamily: The address family (or I{domain}) of the socket. For example, L{socket.AF_INET6}. @param factory: A L{ServerFactory} instance to use to create new protocols to handle connections accepted via this socket. @return: An object providing L{IListeningPort}. @raise twisted.internet.error.UnsupportedAddressFamily: If the given address family is not supported by this reactor, or not supported with the given socket type. @raise twisted.internet.error.UnsupportedSocketType: If the given socket type is not supported by this reactor, or not supported with the given socket type. Nr-fileDescriptor addressFamilyrs r/adoptStreamPortzIReactorSocket.adoptStreamPortr4r.cy)a Add an existing connected I{SOCK_STREAM} socket to the reactor to monitor for data. Note that the given factory won't have its C{startFactory} and C{stopFactory} methods called, as there is no sensible time to call them in this situation. @param 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 C{adoptStreamConnection} returns. @param addressFamily: The address family (or I{domain}) of the socket. For example, L{socket.AF_INET6}. @param factory: A L{ServerFactory} instance to use to create a new protocol to handle the connection via this socket. @raise 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. Nr-rs r/adoptStreamConnectionz$IReactorSocket.adoptStreamConnectionr4r.cy)a 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. @param addressFamily: The address family or I{domain} of the socket. For example, L{socket.AF_INET6}. @param protocol: A L{DatagramProtocol} instance to connect to a UDP transport. @param maxPacketSize: The maximum packet size to accept. @return: An object providing L{IListeningPort}. @raise 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. Nr-)rrrrs r/adoptDatagramPortz IReactorSocket.adoptDatagramPort r4r.N)rrar'AddressFamily'rrr<r)rrarrrrr<r=) rrarrrrrrar<r)r)r*r+r,rrrr-r.r/rrs D  ,; FU  8  ,; FU  :  & %     r.rcHeZdZ d ddZy)IReactorProcessNc y)a Spawn a process, with a process protocol. Arguments given to this function that are listed as L{bytes} or L{unicode} may be encoded or decoded depending on the platform and the argument type given. On UNIX systems (Linux, FreeBSD, macOS) and Python 2 on Windows, L{unicode} arguments will be encoded down to L{bytes} using the encoding given by L{sys.getfilesystemencoding}, to be used with the "narrow" OS APIs. On Python 3 on Windows, L{bytes} arguments will be decoded up to L{unicode} using the encoding given by L{sys.getfilesystemencoding} (C{utf8}) and given to Windows's native "wide" APIs. @param processProtocol: An object which will be notified of all events related to the created process. @param executable: the file name to spawn - the full path should be used. @param args: the command line arguments to pass to the process; a sequence of strings. The first string should be the executable's name. @param env: the environment variables to pass to the child process. The resulting behavior varies between platforms. If: - C{env} is not set: - On POSIX: pass an empty environment. - On Windows: pass L{os.environ}. - C{env} is L{None}: - On POSIX: pass L{os.environ}. - On Windows: pass L{os.environ}. - C{env} is a L{dict}: - On POSIX: pass the key/value pairs in C{env} as the complete environment. - On Windows: update L{os.environ} with the key/value pairs in the L{dict} before passing it. As a consequence of U{bug #1640 }, passing keys with empty values in an effort to unset environment variables I{won't} unset them. @param path: the path to run the subprocess in - defaults to the current directory. @param uid: user ID to run the subprocess as. (Only available on POSIX systems.) @param gid: group ID to run the subprocess as. (Only available on POSIX systems.) @param usePTY: if true, run this process in a pseudo-terminal. optionally a tuple of C{(masterfd, slavefd, ttyname)}, in which case use those file descriptors. (Not available on all systems.) @param childFDs: A dictionary mapping file descriptors in the new child process to an integer or to the string 'r' or 'w'. If the value is an integer, it specifies a file descriptor in the parent process which will be mapped to a file descriptor (specified by the key) in the child process. This is useful for things like inetd and shell-like file redirection. If it is the string 'r', a pipe will be created and attached to the child at that file descriptor: the child will be able to write to that file descriptor and the parent will receive read notification via the L{IProcessProtocol.childDataReceived} callback. This is useful for the child's stdout and stderr. If it is the string 'w', similar setup to the previous case will occur, with the pipe being readable by the child instead of writeable. The parent process can write to that file descriptor using L{IProcessTransport.writeToChild}. This is useful for the child's stdin. If childFDs is not passed, the default behaviour is to use a mapping that opens the usual stdin/stdout/stderr pipes. @see: L{twisted.internet.protocol.ProcessProtocol} @return: An object which provides L{IProcessTransport}. @raise OSError: Raised with errno C{EAGAIN} or C{ENOMEM} if there are insufficient system resources to create a new process. Nr-) processProtocol executableargsenvpathuidgidusePTYchildFDss r/ spawnProcesszIReactorProcess.spawnProcess.r4r.)NNNNFN)rz'IProcessProtocol'rzUnion[bytes, str]rzSequence[Union[bytes, str]]rz!Optional[Mapping[AnyStr, AnyStr]]rzUnion[None, bytes, str]r Optional[int]rrrrrz'Optional[Mapping[int, Union[int, str]]]r<'IProcessTransport')r)r*r+rr-r.r/rr-s 26(,!!<@^ +^ %^ *^ / ^ & ^  ^ ^ ^ :^  ^ r.rc<eZdZdZddZ ddZddZy) IReactorTimez7 Time methods that a Reactor should implement. cy)zg Get the current time in seconds. @return: A number-like object of some sort. Nr-r-r.r/secondszIReactorTime.secondsr4r.cy)a Call a function later. @param delay: the number of seconds to wait. @param callable: the callable object to call later. @param args: the arguments to call it with. @param kwargs: the keyword arguments to call it with. @return: An object which provides L{IDelayedCall} and can be used to cancel the scheduled call, by calling its C{cancel()} method. It also may be rescheduled by calling its C{delay()} or C{reset()} methods. Nr-)delaycallablerkwargss r/ callLaterzIReactorTime.callLaterr4r.cy)zQ See L{twisted.internet.interfaces.IReactorTime.getDelayedCalls} Nr-r-r.r/getDelayedCallszIReactorTime.getDelayedCallsr4r.Nr<r) rrrCallable[..., Any]rrrrr<z'IDelayedCall')r<zSequence['IDelayedCall'])r)r*r+r,rrrr-r.r/rrs>   2 ;A MS  " r.rc8eZdZdZddZd dZd dZd dZd dZy) IDelayedCallz A scheduled call. There are probably other useful methods we can add to this interface; suggestions are welcome. cy)zr Get time when delayed call will happen. @return: time in seconds since epoch (a float). Nr-r-r.r/getTimezIDelayedCall.getTimer4r.cy)z Cancel the scheduled call. @raises twisted.internet.error.AlreadyCalled: if the call has already happened. @raises twisted.internet.error.AlreadyCancelled: if the call has already been cancelled. Nr-r-r.r/rLzIDelayedCall.cancelr4r.cy)aR Delay the scheduled call. @param secondsLater: how many seconds from its current firing time to delay @raises twisted.internet.error.AlreadyCalled: if the call has already happened. @raises twisted.internet.error.AlreadyCancelled: if the call has already been cancelled. Nr-) secondsLaters r/rzIDelayedCall.delayr4r.cy)a Reset the scheduled call's timer. @param secondsFromNow: how many seconds from now it should fire, equivalent to C{.cancel()} and then doing another C{reactor.callLater(secondsLater, ...)} @raises twisted.internet.error.AlreadyCalled: if the call has already happened. @raises twisted.internet.error.AlreadyCancelled: if the call has already been cancelled. Nr-)secondsFromNows r/resetzIDelayedCall.resetr4r.cy)zx @return: True if this call is still active, False if it has been called or cancelled. Nr-r-r.r/activezIDelayedCall.activer4r.Nrr;)rrr<r=)rrr<r=r<r) r)r*r+r,rrLrrrr-r.r/rrs        r.rc(eZdZdZ ddZy)IReactorFromThreadsz This interface is the set of thread-safe methods which may be invoked on the reactor from other threads. @since: 15.4 cy)a Cause a function to be executed by the reactor thread. Use this method when you want to run a function in the reactor's thread from another thread. Calling L{callFromThread} should wake up the main thread (where L{reactor.run() } is executing) and run the given callable in that thread. If you're writing a multi-threaded application the C{callable} may need to be thread safe, but this method doesn't require it as such. If you want to call a function in the next mainloop iteration, but you're in the same thread, use L{callLater} with a delay of 0. Nr-rrrs r/callFromThreadz"IReactorFromThreads.callFromThreadr4r.Nrrrrrrr<r=)r)r*r+r,r r-r.r/r r s, $ -3 ?E  r.r c(eZdZdZ ddZy)IReactorInThreadsz This interface contains the methods exposed by a reactor which will let you run functions in another thread. @since: 15.4 cy)z} Run the given callable object in a separate thread, with the given arguments and keyword arguments. Nr-r s r/ callInThreadzIReactorInThreads.callInThreadr4r.Nr )r)r*r+r,rr-r.r/rrs, $ -3 ?E  r.rc eZdZdZddZddZy)IReactorThreadsz} Dispatch methods to be run in threads. Internally, this should use a thread pool and dispatch methods to them. cy)zx Return the threadpool used by L{IReactorInThreads.callInThread}. Create it first if necessary. Nr-r-r.r/ getThreadPoolzIReactorThreads.getThreadPoolr4r.cy)z Suggest the size of the internal threadpool used to dispatch functions passed to L{IReactorInThreads.callInThread}. Nr-)sizes r/suggestThreadPoolSizez%IReactorThreads.suggestThreadPoolSize$r4r.N)r<z 'ThreadPool')rrar<r=)r)r*r+r,rrr-r.r/rrs   r.rceZdZdZedZd dZddZddZddZ ddZ ddZ dd Z dd Z dd Zy ) IReactorCorez5 Core methods that a Reactor must implement. zjA C{bool} which is C{True} from I{during startup} to I{during shutdown} and C{False} the rest of the time.cy)zc Return a L{twisted.internet.defer.Deferred} that will resolve a hostname. Nr-rBs r/resolvezIReactorCore.resolve5r4r.cy)z Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with C{stop()} or C{crash()}. Nr-r-r.r/runzIReactorCore.run;r4r.cy)z Fire 'shutdown' System Events, which will move the reactor to the 'stopped' state and cause C{reactor.run()} to exit. Nr-r-r.r/stopzIReactorCore.stopBr4r.cy)as Stop the main loop *immediately*, without firing any system events. This is named as it is because this is an extremely "rude" thing to do; it is possible to lose data and put your system in an inconsistent state by calling this. However, it is necessary, as sometimes a system can become wedged in a pre-shutdown call. Nr-r-r.r/crashzIReactorCore.crashHr4r.cy)ap Run the main loop's I/O polling function for a period of time. This is most useful in applications where the UI is being drawn "as fast as possible", such as games. All pending L{IDelayedCall}s will be called. The reactor must have been started (via the C{run()} method) prior to any invocations of this method. It must also be stopped manually after the last call to this method (via the C{stop()} method). This method is not re-entrant: you must not call it recursively; in particular, you must not call it while the reactor is running. Nr-)rs r/iteratezIReactorCore.iterateRr4r.cy)z Fire a system-wide event. System-wide events are things like 'startup', 'shutdown', and 'persist'. Nr-) eventTypes r/fireSystemEventzIReactorCore.fireSystemEventar4r.cy)a% Add a function to be called when a system event occurs. Each "system event" in Twisted, such as 'startup', 'shutdown', and 'persist', has 3 phases: 'before', 'during', and 'after' (in that order, of course). These events will be fired internally by the Reactor. An implementor of this interface must only implement those events described here. Callbacks registered for the "before" phase may return either None or a Deferred. The "during" phase will not execute until all of the Deferreds from the "before" phase have fired. Once the "during" phase is running, all of the remaining triggers must execute; their return values must be ignored. @param phase: a time to call the event -- either the string 'before', 'after', or 'during', describing when to call it relative to the event's execution. @param eventType: this is a string describing the type of event. @param callable: the object to call before shutdown. @param args: the arguments to call it with. @param kwargs: the keyword arguments to call it with. @return: an ID that can be used to remove this call with removeSystemEventTrigger. Nr-)phaser&rrrs r/addSystemEventTriggerz"IReactorCore.addSystemEventTriggerir4r.cy)a Removes a trigger added with addSystemEventTrigger. @param triggerID: a value returned from addSystemEventTrigger. @raise KeyError: If there is no system event trigger for the given C{triggerID}. @raise ValueError: If there is no system event trigger for the given C{triggerID}. @raise TypeError: If there is no system event trigger for the given C{triggerID}. Nr-) triggerIDs r/removeSystemEventTriggerz%IReactorCore.removeSystemEventTriggerr4r.cy)a Call a function when the reactor is running. If the reactor has not started, the callable will be scheduled to run when it does start. Otherwise, the callable will be invoked immediately. @param callable: the callable object to call later. @param args: the arguments to call it with. @param kwargs: the keyword arguments to call it with. @return: None if the callable was invoked, otherwise a system event id for the scheduled call. Nr-r s r/callWhenRunningzIReactorCore.callWhenRunningr4r.NrFr;)rrr<r=)r&rGr<r=) r)rGr&rGrrrrrrr<r)r,rr<r=)rrrrrrr<z Optional[Any])r)r*r+r,rrunningrrr r"r$r'r*r-r/r-r.r/rr+s @G        # # # %#  #  # # J   $ -3 ?E  r.rceZdZdZddZy)IReactorPluggableResolvera An L{IReactorPluggableResolver} is a reactor which can be customized with an L{IResolverSimple}. This is a fairly limited interface, that supports only IPv4; you should use L{IReactorPluggableNameResolver} instead. @see: L{IReactorPluggableNameResolver} cy)z Set the internal resolver to use to for name lookups. @param resolver: The new resolver to use. @return: The previously installed resolver. Nr-resolvers r/installResolverz)IReactorPluggableResolver.installResolverr4r.N)r5r@r<r@)r)r*r+r,r6r-r.r/r2r2s  r.r2c(eZdZdZedZddZy)IReactorPluggableNameResolverzx An L{IReactorPluggableNameResolver} is a reactor whose name resolver can be set to a user-supplied object. zw Read-only attribute; the resolver installed with L{installResolver}. An L{IHostnameResolver}. cy)z Set the internal resolver to use for name lookups. @param resolver: The new resolver to use. @return: The previously installed resolver. Nr-r4s r/installNameResolverz1IReactorPluggableNameResolver.installNameResolverr4r.N)r5rXr<rX)r)r*r+r,r nameResolverr:r-r.r/r8r8s  L r.r8c eZdZdZddZddZy)IReactorDaemonizea A reactor which provides hooks that need to be called before and after daemonization. Notes: - This interface SHOULD NOT be called by applications. - This interface should only be implemented by reactors as a workaround (in particular, it's implemented currently only by kqueue()). For details please see the comments on ticket #1918. cy)z Hook to be called immediately before daemonization. No reactor methods may be called until L{afterDaemonize} is called. Nr-r-r.r/beforeDaemonizez!IReactorDaemonize.beforeDaemonizer4r.cy)z Hook to be called immediately after daemonization. This may only be called after L{beforeDaemonize} had been called previously. Nr-r-r.r/afterDaemonizez IReactorDaemonize.afterDaemonizer4r.Nr;)r)r*r+r,r?rAr-r.r/r=r=s   r.r=cHeZdZdZd dZd dZd dZd dZd dZd dZ ddZ y ) IReactorFDSetz Implement me to be able to use L{IFileDescriptor} type resources. This assumes that your main-loop uses UNIX-style numeric file descriptors (or at least similarly opaque IDs returned from a .fileno() method) cy)a I add reader to the set of file descriptors to get read events for. @param reader: An L{IReadDescriptor} provider that will be checked for read events until it is removed from the reactor with L{removeReader}. Nr-readers r/ addReaderzIReactorFDSet.addReaderr4r.cy)a I add writer to the set of file descriptors to get write events for. @param writer: An L{IWriteDescriptor} provider that will be checked for write events until it is removed from the reactor with L{removeWriter}. Nr-writers r/ addWriterzIReactorFDSet.addWriterr4r.cy)zG Removes an object previously added with L{addReader}. Nr-rEs r/ removeReaderzIReactorFDSet.removeReader r4r.cy)zG Removes an object previously added with L{addWriter}. Nr-rIs r/ removeWriterzIReactorFDSet.removeWriterr4r.cy)z Remove all readers and writers. Should not remove reactor internal reactor connections (like a waker). @return: A list of L{IReadDescriptor} and L{IWriteDescriptor} providers which were removed. Nr-r-r.r/ removeAllzIReactorFDSet.removeAllr4r.cy)z Return the list of file descriptors currently monitored for input events by the reactor. @return: the list of file descriptors monitored for input events. Nr-r-r.r/ getReaderszIReactorFDSet.getReaders r4r.cy)z Return the list file descriptors currently monitored for output events by the reactor. @return: the list of file descriptors monitored for output events. Nr-r-r.r/ getWriterszIReactorFDSet.getWriters(r4r.N)rFz'IReadDescriptor'r<r=)rJz'IWriteDescriptor'r<r=)r<z2List[Union['IReadDescriptor', 'IWriteDescriptor']])r<zList['IReadDescriptor'])r<zList['IWriteDescriptor']) r)r*r+r,rGrKrMrOrQrSrUr-r.r/rCrCs*       r.rCc(eZdZdZddZddZddZy) IListeningPortz A listening port. cy)a Start listening on this port. @raise CannotListenError: If it cannot listen on this port (e.g., it is a TCP port and it cannot bind to the required port number). Nr-r-r.r/startListeningzIListeningPort.startListening6r4r.cy)z Stop listening on this port. If it does not complete immediately, will return Deferred that fires upon completion. Nr-r-r.r/ stopListeningzIListeningPort.stopListening?r4r.cy)zj Get the host that this port is listening for. @return: An L{IAddress} provider. Nr-r-r.r/getHostzIListeningPort.getHostGr4r.Nr;r<zOptional['Deferred[None]']r>)r)r*r+r,rYr[r]r-r.r/rWrW1s   r.rWceZdZdZddZy)ILoggingContextz^ Give context information that will be used to log events generated by this item. cy)zQ @return: Prefix used during log formatting to indicate context. Nr-r-r.r/ logPrefixzILoggingContext.logPrefixUr4r.Nr<rG)r)r*r+r,rbr-r.r/r`r`Os   r.r`c eZdZdZddZddZy)IFileDescriptorzI An interface representing a UNIX-style numeric file descriptor. cy)aY @return: The platform-specified representation of a file descriptor number. Or C{-1} if the descriptor no longer has a valid file descriptor number associated with it. As long as the descriptor is valid, calls to this method on a particular instance must return the same value. Nr-r-r.r/filenozIFileDescriptor.fileno`r4r.cy)a Called when the connection was lost. This is called when the connection on a selectable object has been lost. It will be called whether the connection was closed explicitly, an exception occurred in an event handler, or the other end of the connection closed it first. See also L{IHalfCloseableDescriptor} if your descriptor wants to be notified separately of the two halves of the connection being closed. @param reason: A failure instance indicating the reason why the connection was lost. L{error.ConnectionLost} and L{error.ConnectionDone} are of special note, but the failure may be of other classes as well. Nr-reasons r/connectionLostzIFileDescriptor.connectionLostir4r.Nr<rrjrr<r=)r)r*r+r,rgrkr-r.r/rere[s  r.receZdZdZddZy)IReadDescriptorzz An L{IFileDescriptor} that can read. This interface is generally used in conjunction with L{IReactorFDSet}. cy)z Some data is available for reading on your descriptor. @return: If an error is encountered which causes the descriptor to no longer be valid, a L{Failure} should be returned. Otherwise, L{None}. Nr-r-r.r/doReadzIReadDescriptor.doReadr4r.Nr<zOptional[Failure])r)r*r+r,rqr-r.r/roro|   r.roceZdZdZddZy)IWriteDescriptorz{ An L{IFileDescriptor} that can write. This interface is generally used in conjunction with L{IReactorFDSet}. cy)z Some data can be written to your descriptor. @return: If an error is encountered which causes the descriptor to no longer be valid, a L{Failure} should be returned. Otherwise, L{None}. Nr-r-r.r/doWritezIWriteDescriptor.doWriter4r.Nrr)r)r*r+r,rwr-r.r/rurursr.ruceZdZdZy)IReadWriteDescriptorz= An L{IFileDescriptor} that can both read and write. Nr(r-r.r/ryrysr.ryc eZdZdZddZddZy)IHalfCloseableDescriptorz/ A descriptor that can be half-closed. cy)z6 Indicates write connection was lost. Nr-ris r/writeConnectionLostz,IHalfCloseableDescriptor.writeConnectionLostr4r.cy)z5 Indicates read connection was lost. Nr-ris r/readConnectionLostz+IHalfCloseableDescriptor.readConnectionLostr4r.Nrm)r)r*r+r,r}rr-r.r/r{r{  r.r{ceZdZdZddZy) ISystemHandlez? An object that wraps a networking OS-specific handle. cy)ab Return a system- and reactor-specific handle. This might be a socket.socket() object, or some other type of object, depending on which reactor is being used. Use and manipulate at your own risk. This might be used in cases where you want to set specific options not exposed by the Twisted APIs. Nr-r-r.r/ getHandlezISystemHandle.getHandler4r.Nrl)r)r*r+r,rr-r.r/rrs   r.rc(eZdZdZddZddZddZy) IConsumerz3 A consumer consumes data from a producer. cy)a Register to receive data from a producer. This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing(). For L{IPullProducer} providers, C{resumeProducing} will be called once each time data is required. For L{IPushProducer} providers, C{pauseProducing} will be called whenever the write buffer fills up and C{resumeProducing} will only be called when it empties. The consumer will only call C{resumeProducing} to balance a previous C{pauseProducing} call; the producer is assumed to start in an un-paused state. @param streaming: C{True} if C{producer} provides L{IPushProducer}, C{False} if C{producer} provides L{IPullProducer}. @raise RuntimeError: If a producer is already registered. Nr-)producer streamings r/registerProducerzIConsumer.registerProducerr4r.cy)zM Stop consuming data from a producer, without disconnecting. Nr-r-r.r/unregisterProducerzIConsumer.unregisterProducerr4r.cy)a@ The producer will write data by calling this method. The implementation must be non-blocking and perform whatever buffering is necessary. If the producer has provided enough data for now and it is a L{IPushProducer}, the consumer may call its C{pauseProducing} method. Nr-datas r/writezIConsumer.writer4r.N)rz 'IProducer'rrr<r=r;rbytesr<r=)r)r*r+r,rrrr-r.r/rrs 0  r.rceZdZdZddZy) IProducerz A producer produces data for a consumer. Typically producing is done by calling the C{write} method of a class implementing L{IConsumer}. cy)z Stop producing data. This tells a producer that its consumer has died, so it must stop producing data for good. Nr-r-r.r/ stopProducingzIProducer.stopProducingr4r.Nr;)r)r*r+r,rr-r.r/rrs  r.rc eZdZdZddZddZy) IPushProducera^ A push producer, also known as a streaming producer is expected to produce (write to this consumer) data on a continuous basis, unless it has been paused. A paused push producer will resume producing after its C{resumeProducing()} method is called. For a push producer which is not pauseable, these functions may be noops. cy)z Pause producing data. Tells a producer that it has produced too much data to process for the time being, and to stop until C{resumeProducing()} is called. Nr-r-r.r/pauseProducingzIPushProducer.pauseProducing r4r.cy)z Resume producing data. This tells a producer to re-add itself to the main loop and produce more data for its consumer. Nr-r-r.r/resumeProducingzIPushProducer.resumeProducingr4r.Nr;)r)r*r+r,rrr-r.r/rrs  r.rceZdZdZddZy) IPullProducerz A pull producer, also known as a non-streaming producer, is expected to produce data each time L{resumeProducing()} is called. cy)a Produce data for the consumer a single time. This tells a producer to produce data for the consumer once (not repeatedly, once only). Typically this will be done by calling the consumer's C{write} method a single time with produced data. The producer should produce data before returning from C{resumeProducing()}, that is, it should not schedule a deferred write. Nr-r-r.r/rzIPullProducer.resumeProducing$r4r.Nr;)r)r*r+r,rr-r.r/rrs   r.rc,eZdZddZddZddZd dZy) IProtocolcy)a2 Called whenever data is received. Use this method to translate to a higher-level message. Usually, some callback will be made upon the receipt of each complete protocol message. Please keep in mind that you will probably need to buffer some data as partial (or multiple) protocol messages may be received! We recommend that unit tests for protocols call through to this method with differing chunk sizes, down to one byte at a time. @param data: bytes of indeterminate length Nr-rs r/ dataReceivedzIProtocol.dataReceived2r4r.cy)as Called when the connection is shut down. Clear any circular references here, and any external references to this Protocol. The connection has been closed. The C{reason} Failure wraps a L{twisted.internet.error.ConnectionDone} or L{twisted.internet.error.ConnectionLost} instance (or a subclass of one of those). Nr-ris r/rkzIProtocol.connectionLostBr4r.cy)z@ Make a connection to a transport and a server. Nr-) transports r/makeConnectionzIProtocol.makeConnectionMr4r.cy)a Called when a connection is made. This may be considered the initializer of the protocol, because it is called when the connection is completed. For clients, this is called once the connection to the server has been established; for servers, this is called after an accept() call stops blocking and a socket has been received. If you need to send any greeting or initial message, do it here. Nr-r-r.r/connectionMadezIProtocol.connectionMadeRr4r.Nrrm)rz 'ITransport'r<r=r;)r)r*r+rrkrrr-r.r/rr1s    r.rc8eZdZdZddZd dZd dZd dZd dZy) IProcessProtocolz7 Interface for process-related event handlers. cy)z Called when the process has been created. @param process: An object representing the process which has been created and associated with this protocol. Nr-)processs r/rzIProcessProtocol.makeConnectiondr4r.cy)z Called when data arrives from the child process. @param childFD: The file descriptor from which the data was received. @param data: The data read from the child's file descriptor. Nr-childFDrs r/childDataReceivedz"IProcessProtocol.childDataReceivedlr4r.cy)z Called when a file descriptor associated with the child process is closed. @param childFD: The file descriptor which was closed. Nr-)rs r/childConnectionLostz$IProcessProtocol.childConnectionLostur4r.cy)aI Called when the child process exits. @param reason: A failure giving the reason the child process terminated. The type of exception for this failure is either L{twisted.internet.error.ProcessDone} or L{twisted.internet.error.ProcessTerminated}. @since: 8.2 Nr-ris r/ processExitedzIProcessProtocol.processExited}r4r.cy)ay Called when the child process exits and all file descriptors associated with it have been closed. @param reason: A failure giving the reason the child process terminated. The type of exception for this failure is either L{twisted.internet.error.ProcessDone} or L{twisted.internet.error.ProcessTerminated}. Nr-ris r/ processEndedzIProcessProtocol.processEndedr4r.N)rrr<r=rrarrr<r=)rrar<r=rm) r)r*r+r,rrrrrr-r.r/rr_s        r.rc eZdZdZddZddZy)IHalfCloseableProtocolaA Implemented to indicate they want notification of half-closes. TCP supports the notion of half-closing the connection, e.g. closing the write side but still not stopping reading. A protocol that implements this interface will be notified of such events, instead of having connectionLost called. cy)a= Notification of the read connection being closed. This indicates peer did half-close of write side. It is now the responsibility of the this protocol to call loseConnection(). In addition, the protocol MUST make sure a reference to it still exists (i.e. by doing a callLater with one of its methods, etc.) as the reactor will only have a reference to it if it is writing. If the protocol does not do so, it might get garbage collected without the connectionLost method ever being called. Nr-r-r.r/rz)IHalfCloseableProtocol.readConnectionLostr4r.cy)z Notification of the write connection being closed. This will never be called for TCP connections as TCP does not support notification of this type of half-close. Nr-r-r.r/r}z*IHalfCloseableProtocol.writeConnectionLostr4r.Nr;)r)r*r+r,rr}r-r.r/rrs   r.rceZdZdZddZy)IHandshakeListeneraC An interface implemented by a L{IProtocol} to indicate that it would like to be notified when TLS handshakes complete when run over a TLS-based transport. This interface is only guaranteed to be called when run over a TLS-based transport: non TLS-based transports will not respect this interface. cy)ax Notification of the TLS handshake being completed. This notification fires when OpenSSL has completed the TLS handshake. At this point the TLS connection is established, and the protocol can interrogate its transport (usually an L{ISSLTransport}) for details of the TLS connection. This notification *also* fires whenever the TLS session is renegotiated. As a result, protocols that have certain minimum security requirements should implement this interface to ensure that they are able to re-evaluate the security of the TLS session if it changes. Nr-r-r.r/handshakeCompletedz%IHandshakeListener.handshakeCompletedr4r.Nr;)r)r*r+r,rr-r.r/rrs   r.rceZdZdZddZy)IFileDescriptorReceiverz Protocols may implement L{IFileDescriptorReceiver} to receive file descriptors sent to them. This is useful in conjunction with L{IUNIXTransport}, which allows file descriptors to be sent between processes on a single host. cy)z Called when a file descriptor is received over the connection. @param descriptor: The descriptor which was received. @return: L{None} Nr- descriptors r/fileDescriptorReceivedz.IFileDescriptorReceiver.fileDescriptorReceivedr4r.Nrrar<r=)r)r*r+r,rr-r.r/rrs  r.rc(eZdZdZddZddZddZy)IProtocolFactoryz+ Interface for protocol factories. cy)a Called when a connection has been established to addr. If None is returned, the connection is assumed to have been refused, and the Port will close the connection. @param addr: The address of the newly-established connection @return: None if the connection was refused, otherwise an object providing L{IProtocol}. Nr-addrs r/ buildProtocolzIProtocolFactory.buildProtocolr4r.cy)zM Called every time this is connected to a Port or Connector. Nr-r-r.r/doStartzIProtocolFactory.doStartr4r.cy)zQ Called every time this is unconnected from a Port or Connector. Nr-r-r.r/doStopzIProtocolFactory.doStopr4r.N)rr'r<zOptional[IProtocol]r;)r)r*r+r,rrrr-r.r/rrs    r.rc8eZdZdZddZd dZd dZd dZd dZy) ITransporta I am a transport for bytes. I represent (and wrap) the physical connection and synchronicity of the framework which is talking to the network. I make no representations about whether calls to me will happen immediately or require returning to a control loop, or whether they will happen in the same or another thread. Consider methods of this class (aside from getPeer) to be 'thrown over the wall', to happen at some indeterminate time. cy)aH Write some data to the physical connection, in sequence, in a non-blocking fashion. If possible, make sure that it is all written. No data will ever be lost, although (obviously) the connection may be closed before it all gets through. @param data: The data to write. Nr-rs r/rzITransport.write r4r.cy)a Write an iterable of byte strings to the physical connection. If possible, make sure that all of the data is written to the socket at once, without first copying it all into a single byte string. @param data: The data to write. Nr-rs r/ writeSequencezITransport.writeSequencer4r.cy)z Close my connection, after writing all pending data. Note that if there is a registered producer on a transport it will not be closed until the producer has been unregistered. Nr-r-r.r/loseConnectionzITransport.loseConnection$r4r.cy)ah Get the remote address of this connection. Treat this method with caution. It is the unfortunate result of the CGI and Jabber standards, but should not be considered reliable for the usual host of reasons; port forwarding, proxying, firewalls, IP masquerading, etc. @return: An L{IAddress} provider. Nr-r-r.r/getPeerzITransport.getPeer,r4r.cy)z Similar to getPeer, but returns an address describing this side of the connection. @return: An L{IAddress} provider. Nr-r-r.r/r]zITransport.getHost8r4r.Nr)rzIterable[bytes]r<r=r;r>) r)r*r+r,rrrrr]r-r.r/rrs          r.rcPeZdZdZd dZd dZd dZd dZd dZd dZ ddZ dd Z y ) ITCPTransportz A TCP based transport. cy)aq Half-close the write side of a TCP connection. If the protocol instance this is attached to provides IHalfCloseableProtocol, it will get notified when the operation is done. When closing write connection, as with loseConnection this will only happen when buffer has emptied and there is no registered producer. Nr-r-r.r/loseWriteConnectionz!ITCPTransport.loseWriteConnectionFr4r.cy)z Close the connection abruptly. Discards any buffered data, stops any registered producer, and, if possible, notifies the other end of the unclean closure. @since: 11.1 Nr-r-r.r/abortConnectionzITCPTransport.abortConnectionQr4r.cy)z6 Return if C{TCP_NODELAY} is enabled. Nr-r-r.r/ getTcpNoDelayzITCPTransport.getTcpNoDelay\r4r.cy)z Enable/disable C{TCP_NODELAY}. Enabling C{TCP_NODELAY} turns off Nagle's algorithm. Small packets are sent sooner, possibly at the expense of overall throughput. Nr-enableds r/ setTcpNoDelayzITCPTransport.setTcpNoDelayar4r.cy)z7 Return if C{SO_KEEPALIVE} is enabled. Nr-r-r.r/getTcpKeepAlivezITCPTransport.getTcpKeepAliveir4r.cy)a Enable/disable C{SO_KEEPALIVE}. Enabling C{SO_KEEPALIVE} sends packets periodically when the connection is otherwise idle, usually once every two hours. They are intended to allow detection of lost peers in a non-infinite amount of time. Nr-rs r/setTcpKeepAlivezITCPTransport.setTcpKeepAlivenr4r.cyz; Returns L{IPv4Address} or L{IPv6Address}. Nr-r-r.r/r]zITCPTransport.getHostwr4r.cyrr-r-r.r/rzITCPTransport.getPeer|r4r.Nr;rrrr<r=r<z#Union['IPv4Address', 'IPv6Address']) r)r*r+r,rrrrrrr]rr-r.r/rrAs/          r.rceZdZdZddZy)IUNIXTransportz@ Transport for stream-oriented unix domain connections. cy)ax Send a duplicate of this (file, socket, pipe, etc) descriptor to the other end of this connection. The send is non-blocking and will be queued if it cannot be performed immediately. The send will be processed in order with respect to other C{sendFileDescriptor} calls on this transport, but not necessarily with respect to C{write} calls on this transport. The send can only be processed if there are also bytes in the normal connection-oriented send buffer (ie, you must call C{write} at least as many times as you call C{sendFileDescriptor}). @param descriptor: An C{int} giving a valid file descriptor in this process. Note that a I{file descriptor} may actually refer to a socket, a pipe, or anything else POSIX tries to treat in the same way as a file. Nr-rs r/sendFileDescriptorz!IUNIXTransport.sendFileDescriptorr4r.Nr)r)r*r+r,rr-r.r/rrs  r.rc eZdZdZ ddZy)IOpenSSLServerConnectionCreatoraX A provider of L{IOpenSSLServerConnectionCreator} can create L{OpenSSL.SSL.Connection} objects for TLS servers. @see: L{twisted.internet.ssl} @note: Creating OpenSSL connection objects is subtle, error-prone, and security-critical. Before implementing this interface yourself, consider using L{twisted.internet.ssl.CertificateOptions} as your C{contextFactory}. (For historical reasons, that class does not actually I{implement} this interface; nevertheless it is usable in all Twisted APIs which require a provider of this interface.) cy)z Create a connection for the given server protocol. @return: an OpenSSL connection object configured appropriately for the given Twisted protocol. Nr- tlsProtocols r/serverConnectionForTLSz6IOpenSSLServerConnectionCreator.serverConnectionForTLSr4r.Nrz'TLSMemoryBIOProtocol'r<z'OpenSSLConnection')r)r*r+r,rr-r.r/rrs  +  r.rc eZdZdZ ddZy)IOpenSSLClientConnectionCreatora A provider of L{IOpenSSLClientConnectionCreator} can create L{OpenSSL.SSL.Connection} objects for TLS clients. @see: L{twisted.internet.ssl} @note: Creating OpenSSL connection objects is subtle, error-prone, and security-critical. Before implementing this interface yourself, consider using L{twisted.internet.ssl.optionsForClientTLS} as your C{contextFactory}. cy)z Create a connection for the given client protocol. @param tlsProtocol: the client protocol making the request. @return: an OpenSSL connection object configured appropriately for the given Twisted protocol. Nr-rs r/clientConnectionForTLSz6IOpenSSLClientConnectionCreator.clientConnectionForTLSr4r.Nr)r)r*r+r,rr-r.r/rrs   +    r.rceZdZdZddZy)IProtocolNegotiationFactoryaL A provider of L{IProtocolNegotiationFactory} can provide information about the various protocols that the factory can create implementations of. This can be used, for example, to provide protocol names for Next Protocol Negotiation and Application Layer Protocol Negotiation. @see: L{twisted.internet.ssl} cy)z Returns a list of protocols that can be spoken by the connection factory in the form of ALPN tokens, as laid out in the IANA registry for ALPN tokens. @return: a list of ALPN tokens in order of preference. Nr-r-r.r/acceptableProtocolsz/IProtocolNegotiationFactory.acceptableProtocolsr4r.N)r<z List[bytes])r)r*r+r,rr-r.r/rr  r.rceZdZdZddZy)IOpenSSLContextFactorya5 A provider of L{IOpenSSLContextFactory} is capable of generating L{OpenSSL.SSL.Context} classes suitable for configuring TLS on a connection. A provider will store enough state to be able to generate these contexts as needed for individual connections. @see: L{twisted.internet.ssl} cy)z Returns a TLS context object, suitable for securing a TLS connection. This context object will be appropriately customized for the connection based on the state in this object. @return: A TLS context object. Nr-r-r.r/ getContextz!IOpenSSLContextFactory.getContextr4r.N)r<z'OpenSSLContext')r)r*r+r,rr-r.r/rrrr.rc eZdZdZ ddZy) ITLSTransportz A TCP transport that supports switching to TLS midstream. Once TLS mode is started the transport will implement L{ISSLTransport}. cy)a Initiate TLS negotiation. @param contextFactory: An object which creates appropriately configured TLS connections. For clients, use L{twisted.internet.ssl.optionsForClientTLS}; for servers, use L{twisted.internet.ssl.CertificateOptions}. @type contextFactory: L{IOpenSSLClientConnectionCreator} or L{IOpenSSLServerConnectionCreator}, depending on whether this L{ITLSTransport} is a server or not. If the appropriate interface is not provided by the value given for C{contextFactory}, it must be an implementor of L{IOpenSSLContextFactory}. Nr-)rs r/startTLSzITLSTransport.startTLSr4r.N)rzGUnion[IOpenSSLClientConnectionCreator, IOpenSSLServerConnectionCreator]r<r=)r)r*r+r,r r-r.r/r r s        r.r ceZdZdZddZy) ISSLTransportz$ A SSL/TLS based transport. cy)zD Return an object with the peer's certificate info. Nr-r-r.r/getPeerCertificatez ISSLTransport.getPeerCertificate r4r.Nrl)r)r*r+r,rr-r.r/rr s  r.rc eZdZdZedZy) INegotiatedz A TLS based transport that supports using ALPN/NPN to negotiate the protocol to be used inside the encrypted tunnel. aC The protocol selected to be spoken using ALPN/NPN. The result from ALPN is preferred to the result from NPN if both were used. If the remote peer does not support ALPN or NPN, or neither NPN or ALPN are available on this machine, will be L{None}. Otherwise, will be the name of the selected protocol as C{bytes}. Note that until the handshake has completed this property may incorrectly return L{None}: wait until data has been received before trusting it (see https://twistedmatrix.com/trac/ticket/6024). N)r)r*r+r,rnegotiatedProtocolr-r.r/rr s #  r.rc eZdZdZedZy)ICipherz A TLS cipher. z5The fully qualified name of the cipher in L{unicode}.N)r)r*r+r,rfullNamer-r.r/rr3 sPQHr.rceZdZdZddZy)IAcceptableCiphersz9 A list of acceptable ciphers for a TLS context. cy)a Choose which ciphers to allow to be negotiated on a TLS connection. @param availableCiphers: A L{tuple} of L{ICipher} which gives the names of all ciphers supported by the TLS implementation in use. @return: A L{tuple} of L{ICipher} which represents the ciphers which may be negotiated on the TLS connection. The result is ordered by preference with more preferred ciphers appearing earlier. Nr-)availableCipherss r/ selectCiphersz IAcceptableCiphers.selectCiphers@ r4r.N)rTuple[ICipher]r<r)r)r*r+r,rr-r.r/rr; s   r.rcXeZdZdZedZd dZd dZd dZd dZ d dZ d dZ dd Z y )IProcessTransportz A process transport. zFrom before L{IProcessProtocol.makeConnection} is called to before L{IProcessProtocol.processEnded} is called, C{pid} is an L{int} giving the platform process ID of this process. C{pid} is L{None} at all other times.cy)zB Close stdin after all data has been written out. Nr-r-r.r/ closeStdinzIProcessTransport.closeStdinZ r4r.cy)z Close stdout. Nr-r-r.r/ closeStdoutzIProcessTransport.closeStdout_ r4r.cy)z Close stderr. Nr-r-r.r/ closeStderrzIProcessTransport.closeStderrd r4r.cy)z Close a file descriptor which is connected to the child process, identified by its FD in the child process. Nr-rs r/ closeChildFDzIProcessTransport.closeChildFDi r4r.cy)a Similar to L{ITransport.write} but also allows the file descriptor in the child process which will receive the bytes to be specified. @param childFD: The file descriptor to which to write. @param data: The bytes to write. @raise KeyError: If C{childFD} is not a file descriptor that was mapped in the child when L{IReactorProcess.spawnProcess} was used to create it. Nr-rs r/ writeToChildzIProcessTransport.writeToChildo r4r.cy)z1 Close stdin, stderr and stdout. Nr-r-r.r/rz IProcessTransport.loseConnection| r4r.cy)a* Send a signal to the process. @param signalID: can be - one of C{"KILL"}, C{"TERM"}, or C{"INT"}. These will be implemented in a cross-platform manner, and so should be used if possible. - an integer, where it represents a POSIX signal ID. @raise twisted.internet.error.ProcessExitedAlready: If the process has already exited. @raise OSError: If the C{os.kill} call fails with an errno different from C{ESRCH}. Nr-)signalIDs r/ signalProcesszIProcessTransport.signalProcess r4r.Nr;rr)r+zUnion[str, int]r<r=) r)r*r+r,rpidr r"r$r&r(rr,r-r.r/rrN s;   C       r.rc(eZdZdZddZddZddZy)IServiceCollectionzF An object which provides access to a collection of services. cy)z Retrieve the named service from this application. Raise a C{KeyError} if there is no such service name. Nr-) serviceNames r/getServiceNamedz"IServiceCollection.getServiceNamed r4r.cy)z3 Add a service to this collection. Nr-services r/ addServicezIServiceCollection.addService r4r.cy)z8 Remove a service from this collection. Nr-r4s r/ removeServicez IServiceCollection.removeService r4r.N)r1rGr<r)r5rr<r=)r)r*r+r,r2r6r8r-r.r/r/r/ s   r.r/c@eZdZdZd dZd dZd dZd dZd dZddZ y) IUDPTransportz. Transport for UDP DatagramProtocols. cy)a` Write packet to given address. @param addr: a tuple of (ip, port). For connected transports must be the address the transport is connected to, or None. In non-connected mode this is mandatory. @raise twisted.internet.error.MessageLengthError: C{packet} was too long. Nr-packetrs r/rzIUDPTransport.write r4r.cy)a Connect the transport to an address. This changes it to connected mode. Datagrams can only be sent to this address, and will only be received from this address. In addition the protocol's connectionRefused method might get called if destination is not receiving datagrams. @param host: an IP address, not a domain name ('127.0.0.1', not 'localhost') @param port: port to connect to. Nr-)rrs r/r8zIUDPTransport.connect r4r.cy)zk Get this port's host address. @return: an address describing the listening port. Nr-r-r.r/r]zIUDPTransport.getHost r4r.cy)z Stop listening on this port. If it does not complete immediately, will return L{Deferred} that fires upon completion. Nr-r-r.r/r[zIUDPTransport.stopListening r4r.cy)zo Set whether this port may broadcast. @param enabled: Whether the port may broadcast. Nr-rs r/setBroadcastAllowedz!IUDPTransport.setBroadcastAllowed r4r.cy)z{ Checks if broadcast is currently allowed on this port. @return: Whether this port may broadcast. Nr-r-r.r/getBroadcastAllowedz!IUDPTransport.getBroadcastAllowed r4r.N)r=rrrr<r=)rrGrrar<r=rr^rr) r)r*r+r,rr8r]r[rBrDr-r.r/r:r: s%        r.r:c eZdZdZddZddZy)IUNIXDatagramTransportz, Transport for UDP PacketProtocols. cy)z0 Write packet to given address. Nr-r<s r/rzIUNIXDatagramTransport.write r4r.cyz) Returns L{UNIXAddress}. Nr-r-r.r/r]zIUNIXDatagramTransport.getHost r4r.N)r=rrrGr<r=r<z 'UNIXAddress')r)r*r+r,rr]r-r.r/rFrF rr.rFc(eZdZdZddZddZddZy)IUNIXDatagramConnectedTransportz5 Transport for UDP ConnectedPacketProtocols. cy)z> Write packet to address we are connected to. Nr-)r=s r/rz%IUNIXDatagramConnectedTransport.write r4r.cyrIr-r-r.r/r]z'IUNIXDatagramConnectedTransport.getHost r4r.cyrIr-r-r.r/rz'IUNIXDatagramConnectedTransport.getPeer r4r.N)r=rr<r=rJ)r)r*r+r,rr]rr-r.r/rLrL s   r.rLcPeZdZdZd dZd dZd dZddZddZddZ ddZ dd Z y )IMulticastTransportz5 Additional functionality for multicast UDP. cy)zA Return interface of outgoing multicast packets. Nr-r-r.r/getOutgoingInterfacez(IMulticastTransport.getOutgoingInterface r4r.cy)ze Set interface for outgoing multicast packets. Returns Deferred of success. Nr-rs r/setOutgoingInterfacez(IMulticastTransport.setOutgoingInterface r4r.cy)z5 Return if loopback mode is enabled. Nr-r-r.r/getLoopbackModez#IMulticastTransport.getLoopbackMode r4r.cy)z2 Set if loopback mode is enabled. Nr-)rs r/setLoopbackModez#IMulticastTransport.setLoopbackMode" r4r.cy)z9 Get time to live for multicast packets. Nr-r-r.r/getTTLzIMulticastTransport.getTTL' r4r.cy)z8 Set time to live on multicast packets. Nr-)ttls r/setTTLzIMulticastTransport.setTTL, r4r.cy)z Join a multicast group. Returns L{Deferred} of success or failure. If an error occurs, the returned L{Deferred} will fail with L{error.MulticastJoinError}. Nr-rrs r/ joinGroupzIMulticastTransport.joinGroup1 r4r.cy)zG Leave multicast group, return L{Deferred} of success. Nr-r`s r/ leaveGroupzIMulticastTransport.leaveGroup9 r4r.Nrc)rrGr<r=r)rrr<r=)r<ra)r]rar<r=)rrGrrGr<z'Deferred[None]') r)r*r+r,rSrUrWrYr[r^rarcr-r.r/rQrQ s/        r.rQceZdZdZddZy)IStreamClientEndpointz A stream client endpoint is a place that L{ClientFactory} can connect to. For example, a remote TCP host/port pair would be a TCP client endpoint. @since: 10.1 cy)a Connect the C{protocolFactory} to the location specified by this L{IStreamClientEndpoint} provider. @param protocolFactory: A provider of L{IProtocolFactory} @return: A L{Deferred} that results in an L{IProtocol} upon successful connection otherwise a L{Failure} wrapping L{ConnectError} or L{NoProtocol }. Nr-protocolFactorys r/r8zIStreamClientEndpoint.connectG r4r.N)rhrr<z'Deferred[IProtocol]')r)r*r+r,r8r-r.r/rere? s   r.receZdZdZddZy)IStreamServerEndpointzz A stream server endpoint is a place that a L{Factory} can listen for incoming connections. @since: 10.1 cy)a, Listen with C{protocolFactory} at the location specified by this L{IStreamServerEndpoint} provider. @param protocolFactory: A provider of L{IProtocolFactory} @return: A L{Deferred} that results in an L{IListeningPort} or an L{CannotListenError} Nr-rgs r/listenzIStreamServerEndpoint.listen\ r4r.N)rhrr<z'Deferred[IListeningPort]')r)r*r+r,rlr-r.r/rjrjT s   r.rjc8eZdZdZedZ ddZy)!IStreamServerEndpointStringParserz An L{IStreamServerEndpointStringParser} is like an L{IStreamClientEndpointStringParserWithReactor}, except for L{IStreamServerEndpoint}s instead of clients. It integrates with L{endpoints.serverFromString} in much the same way. a A C{str}, the description prefix to respond to. For example, an L{IStreamServerEndpointStringParser} plugin which had C{"foo"} for its C{prefix} attribute would be called for endpoint descriptions like C{"foo:bar:baz"} or C{"foo:"}. cy)z Parse a stream server endpoint from a reactor and string-only arguments and keyword arguments. @see: L{IStreamClientEndpointStringParserWithReactor.parseStreamClient} @return: a stream server endpoint Nr-reactorrrs r/parseStreamServerz3IStreamServerEndpointStringParser.parseStreamServery r4r.N)rqrrrrrr<rj)r)r*r+r,rprefixrrr-r.r/rnrnh s= F    &,  8>    r.rnc8eZdZdZedZ ddZy),IStreamClientEndpointStringParserWithReactora An L{IStreamClientEndpointStringParserWithReactor} is a parser which can convert a set of string C{*args} and C{**kwargs} into an L{IStreamClientEndpoint} provider. This interface is really only useful in the context of the plugin system for L{endpoints.clientFromString}. See the document entitled "I{The Twisted Plugin System}" for more details on how to write a plugin. If you place an L{IStreamClientEndpointStringParserWithReactor} plugin in the C{twisted.plugins} package, that plugin's C{parseStreamClient} method will be used to produce endpoints for any description string that begins with the result of that L{IStreamClientEndpointStringParserWithReactor}'s prefix attribute. a! L{bytes}, the description prefix to respond to. For example, an L{IStreamClientEndpointStringParserWithReactor} plugin which had C{b"foo"} for its C{prefix} attribute would be called for endpoint descriptions like C{b"foo:bar:baz"} or C{b"foo:"}. cy)a This method is invoked by L{endpoints.clientFromString}, if the type of endpoint matches the return value from this L{IStreamClientEndpointStringParserWithReactor}'s C{prefix} method. @param reactor: The reactor passed to L{endpoints.clientFromString}. @param args: The byte string arguments, minus the endpoint type, in the endpoint description string, parsed according to the rules described in L{endpoints.quoteStringArgument}. For example, if the description were C{b"my-type:foo:bar:baz=qux"}, C{args} would be C{(b'foo', b'bar')} @param kwargs: The byte string arguments from the endpoint description passed as keyword arguments. For example, if the description were C{b"my-type:foo:bar:baz=qux"}, C{kwargs} would be C{dict(baz=b'qux')}. @return: a client endpoint Nr-rps r/parseStreamClientz>IStreamClientEndpointStringParserWithReactor.parseStreamClient r4r.N)rqrrrrrr<re)r)r*r+r,rrsrwr-r.r/ruru s=  F  &, 8>  r.ruc eZdZdZedZy)_ISupportsExitSignalCapturinga An implementor of L{_ISupportsExitSignalCapturing} will capture the value of any delivered exit signal (SIGINT, SIGTERM, SIGBREAK) for which it has installed a handler. The caught signal number is made available in the _exitSignal attribute. z C{int} or C{None}, the integer exit signal delivered to the application, or None if no signal was delivered. N)r)r*r+r,r _exitSignalr-r.r/ryry s Kr.ryN){r, __future__rtypingrrrrrr r r r r rrzope.interfacerrtwisted.python.failurersocketr OpenSSL.SSLrOpenSSLConnectionrOpenSSLContext ImportErrorrtwisted.internet.abstractrtwisted.internet.addressrrrtwisted.internet.deferrtwisted.internet.protocolrrrrrtwisted.internet.sslr twisted.names.dnsr!r"twisted.protocols.tlsr#twisted.python.runtimer$supportsThreadstwisted.python.threadpoolr%r'r1r@rJrNrXrcrrrrrrrrrrrr rrrr2r8r=rCrWr`reroruryr{rrrrrrrrrrrrrrrrrrr rrrrrr/r:rFrLrQrerjrnruryr-r.r/rs #    0*$4 9NN/:1:/x!8 y  B i 0 i ( ) B% % PO O d- )- `) )) X& 9& R) 9) X ) 6 ) ,   > B> J> B Z 2 i 4 i 4 ) ( Y ( M : M -(RiR  &C C L  .9 I9 x  Y   i *0 )0 f I * I (  <. 9. b I cT 4-33N4sN N  N