txfake/fake_connection.py
def patch_protocol_for_agent(protocol):
    """
    Patch the protocol's makeConnection and connectionLost methods to make the
    protocol and its transport behave more like what `Agent` expects.

    While `Agent` is the driving force behind this, other clients and servers
    will no doubt have similar requirements.
    """
    old_makeConnection = protocol.makeConnection
    old_connectionLost = protocol.connectionLost

    def new_makeConnection(transport):
        patch_transport_fake_push_producer(transport)
        patch_transport_abortConnection(transport, protocol)
        return old_makeConnection(transport)

    def new_connectionLost(reason):
        # Replace ConnectionDone with ConnectionAborted if we aborted.
        if protocol._fake_connection_aborted and reason.check(ConnectionDone):
            reason = Failure(ConnectionAborted())
        return old_connectionLost(reason)

    protocol.makeConnection = new_makeConnection
    protocol.connectionLost = new_connectionLost
    protocol._fake_connection_aborted = False
def patch_protocol_for_agent(protocol):
    old_makeConnection = protocol.makeConnection
    old_connectionLost = protocol.connectionLost

    def new_makeConnection(transport):
        patch_transport_fake_push_producer(transport)
        patch_transport_abortConnection(transport, protocol)
        return old_makeConnection(transport)

    def new_connectionLost(reason):
        # Replace ConnectionDone with ConnectionAborted if we aborted.
        if protocol._fake_connection_aborted and reason.check(ConnectionDone):
            reason = Failure(ConnectionAborted())
        return old_connectionLost(reason)

    protocol.makeConnection = new_makeConnection
    protocol.connectionLost = new_connectionLost
    protocol._fake_connection_aborted = False
def patch_protocol_for_agent ( protocol ) : old_makeConnection = protocol . makeConnection old_connectionLost = protocol . connectionLost def new_makeConnection ( transport ) : patch_transport_fake_push_producer ( transport ) patch_transport_abortConnection ( transport , protocol ) return old_makeConnection ( transport ) def new_connectionLost ( reason ) : # Replace ConnectionDone with ConnectionAborted if we aborted. if protocol . _fake_connection_aborted and reason . check ( ConnectionDone ) : reason = Failure ( ConnectionAborted ( ) ) return old_connectionLost ( reason ) protocol . makeConnection = new_makeConnection protocol . connectionLost = new_connectionLost protocol . _fake_connection_aborted = False
Patch the protocol's makeConnection and connectionLost methods to make the
    protocol and its transport behave more like what `Agent` expects.

    While `Agent` is the driving force behind this, other clients and servers
    will no doubt have similar requirements.
Patch the protocol s makeConnection and connectionLost methods to make the protocol and its transport behave more like what Agent expects .