lp://staging/txamqp

Created by Esteve Fernandez and last modified
Get this branch:
bzr branch lp://staging/txamqp
Members of txAMQP Team can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
txAMQP Team
Project:
txAMQP
Status:
Abandoned

Recent revisions

78. By Free Ekanayaka

Drop Debian packaging code, since it will live on git.debian.org itself

77. By Free Ekanayaka

Sub-class the generic txamqp.client.Closed error so it's easier for
consuming code to distinguish between AMQP "channel" errors and
"connection" errors (they have different semantics and happen under
different circumstances, so you want to typically handle them
differently).

Note that these are protocol-level errors, non transport-level
ones (i.e. the TCP connection is still open after they happen).

While at it, some try/except blocks were migrated to py3-compatible
syntax ("Exception, e:" vs "Exception as e:").

76. By Free Ekanayaka

This branch implements the following changes:

- TwistedDelegate.connection_close now sends a 'close-ok' method frame before
  calling AMQClient.doClose. There's no response for this type of method, but
  we can be confident that it will be written to the transport before the
  transport gets closed, since AMQClient.doClose eventually calls
  transport.loseConnection(), which does flush buffers before shutting down
  the socket.

- AMQClient now has a new "disconnected" instance attribute, which is a
  TwistedEvent that consumer code can wait on in order to know when the
  transport has actually shut down. This is useful for integrating
  txamqp with things like twisted.application.internet.ClientService (that
  would start to connect again as soon as the connection is lost).

- AMQClient.closed is now properly initialized in the __init__ (it was set
  dynamically before), so it's always safe to inspect it.

- The AMQClient.sendHB LoopingCall now gets the same clock as AMQClient, instead
  of the global reactor. This makes unit-testing easier.

- AMQClient.queues (of type TimeoutDeferredQueue) also get same clock
  as AMQClient.

- The "reason" parameter of AMQClient.close is now optional and defaults
  to ConnectionDone.

- AMQClient.close has a new "within" parameter, which tells the client to
  possibly try to perform a clean connection shutdown with the 'close'/'close-ok'
  frames handshake. If the handshake doesn't succeed in "within" seconds, the
  transport connection gets terminated without handshake. The default of the
  new parameter is 0, which means "do close immediately without handshake", so
  there's should be no behavior change at all for existing code, expect that
  close() now returns a Deferred.

- The old AMQClient.close logic has been moved to AMQClient.doClose, which is
  basically the same pattern as AMQChannel.close/doClose.

- AMQClient.checkHeartbeat now calls abortConnection rather than loseConnection: since
  the peer is unresponsive it most probably won't perform the TCP closing handshake
  anyways.

- Unit tests and integration tests where added for all the behavior above.

75. By Free Ekanayaka

Merge travis-integration [f=1590428]

This branch adds a .travis.yml file with basic configuration for
making txamqp tests run on Travis.

Also, a small flakiness was fixed in a test (apparently basic_qos should
be sent before publishing messages).

The README.md file symlinks to the (now markdown-ified) doc/README.

71. By Esteve Fernandez

Bump version.

70. By Esteve Fernandez

Fragment body if the content frame exceeds the negotiated max fram length.

69. By Esteve Fernandez

Use AMQPLAIN by default. Thanks Vsevolod Novikov. Fixes #949874

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.