Revision history for Net-Async-AMQP

0.012     2014-12-11 11:04:10+00:00 Europe/London
	No new features.

	Bugs fixed:
	* Heartbeat handling overhaul - the send/receive heartbeat timers are independent,
	so we can now pick up heartbeat failure when we're not actively sending.
	* Fixes for channel/connection close handling - all Futures representing channel activities
	will now be marked as failed on channel closure
	* Default values for user+password (guest/guest) are now applied - this avoids the following
	RabbitMQ error:
	 "AMQPLAIN auth info [{<<76,79,71,73,78>>,void,undefined},{<<80,65,83,83,87,79,82,68>>,void,undefined}]
	 is missing LOGIN or PASSWORD field"

	Internal changes:
	* Timers and stream are now children of the top-level Net::Async::AMQP object
	rather than attached directly to the loop

0.011     2014-12-03 13:20:39+00:00 Europe/London
	New features:
	* Pass Basic.CancelOk notifications through as a cancel event:
	 $ch->bus->subscribe_to_event(cancel => sub { my ($ev, $ctag) = @_; warn "cancel ctag $ctag" });
	Needs the client property set for RabbitMQ to start sending these
	messages - http://www.rabbitmq.com/consumer-cancel.html:
     client_properties => {
      capabilities => {
       consumer_cancel_notify => Net::AMQP::Value->true,
	  }
	 }
	in ->connect() or ConnectionManager->add()

	Bugs fixed:
	* Header and body frame type detection fixed
	* Outgoing heartbeat timer reset on expiry

0.010     2014-12-02 10:14:25+00:00 Europe/London
	New features:
	* Support for passing heartbeat as a server parameter when calling
	->add() on a Net::Async::AMQP::ConnectionManager.

0.009     2014-12-01 14:41:04+00:00 Europe/London
	No new features.

	Bugs fixed:
	* No longer attempts to call ->frame_method on heartbeat frames

0.008     2014-08-30 00:33:42+01:00 Europe/London
	New features:
	* Debugging uses ->debug_printf() everywhere, and is controlled by the
	standard IO_ASYNC_DEBUG env var
	* Basic server implementation, still not usable but clients can at least
	connect now
	* All channel frames are now handled by the relevant ::Channel instance,
	should provide slightly better performance and less chance for things
	to go out of sync

	Bugs fixed:
	* Expect publish ACK even when we get a NO_ROUTE response 
	* Explicit string type enforced on all queue/exchange/routing key/ctag
	fields, to allow numeric-looking values - a precaution against issues like
	https://rt.cpan.org/Ticket/Display.html?id=81733
	* Avoid excessive warnings in global destruction when the
	Net::Async::AMQP::ConnectionManager objects go out of scope.

0.007     2014-08-27 03:27:09+01:00 Europe/London
	No new features.

	Bugs fixed:
	* Channel traffic is independent. As such, the global pending frame handling
	was broken: instead, we now track pending frames on a per-channel basis.
	* Cancelling a ->listen request between the Consume.Start and Consume.Ok frames
	meant that you'd end up with an active listener - we now explicitly cancel this
	listener when the Consume.Ok frame turns up.
	* Connection manager now applies the managed channel to queue objects
	* Unnecessary extra connections were being opened, this has been fixed.

0.006     2014-08-25 18:01:14+01:00 Europe/London
	No new features.

	Bugs fixed:
	* Handle channel close correctly
	* Pass type information from messages - previously we were using the 'type' header
	instead.

0.005     2014-08-18 05:11:08+01:00 Europe/London
	No new featues.

	Tests fixed:
	* Don't try to connect to a 'default' AMQP server,
	skip if env vars were not provided

0.004     2014-08-17 18:40:45+01:00 Europe/London
	API CHANGES:
	* The Net::Async::AMQP class is now an IO::Async::Notifier, to bring it in line with
	other IO::Aync code. One side effect of this change is that events are now raised through
	a message bus rather than directly on the Net::Async::AMQP instance itself.

	Existing code will need to change this:

	 my $amqp = Net::Async::AMQP->new(loop => $loop);

	to this:

	 $loop->add->(my $amqp = Net::Async::AMQP->new);

	and this:

	 $amqp->subscribe_to_event(...);

	to this:

	 $amqp->bus->subscribe_to_event(...);

	New features:
	* Connection manager for automatically connecting and assigning channels
	* Some loadtesting scripts, for performance+stability testing on the server
	implementation (not available yet, should be in the next release)

	Bugs fixed:
	* If we establish TCP connection but fail to negotiate auth with server,
	previously this would leave the connection future unresolved. It will now
	fail with a message indicating that the remote closed the connection.
	* Net::AMQP was generating an invalid initial connection header
	(AMQP\x01\x01$major$minor rather than AMQP\x00$major$minor$rev as the
	AMQP 0.9.1 spec seems to require), we now generate our own header.
	RabbitMQ seems happy with either.

0.003     2014-02-27 07:56:25+00:00 Europe/London
	Bugs fixed:
	* Connection close sends a real connection close, rather than a channel close request

0.002     2014-02-27 07:10:14+00:00 Europe/London
	New features:
	* Support parameters when declaring queues (passive, durable, exclusive)

0.001     2014-01-05 04:52:26 Europe/London
	Initial CPAN release