Page MenuHomePhabricator (Chris)

No OneTemporary

Size
177 KB
Referenced Files
None
Subscribers
None
diff --git a/amqp-1.7.0/config.m4 b/amqp-1.7.0/config.m4
deleted file mode 100644
index a6f7a1f..0000000
--- a/amqp-1.7.0/config.m4
+++ /dev/null
@@ -1,131 +0,0 @@
-dnl $Id: config.m4 322428 2012-01-17 21:42:40Z pdezwart $
-dnl config.m4 for extension amqp
-
-dnl Comments in this file start with the string 'dnl'.
-dnl Remove where necessary. This file will not work
-dnl without editing.
-dnl amqp
-dnl If your extension references something external, use with:
-
-
-dnl Make sure that the comment is aligned:
-PHP_ARG_WITH(amqp, for amqp support,
-[ --with-amqp Include amqp support])
-
-PHP_ARG_WITH(librabbitmq-dir, for amqp,
-[ --with-librabbitmq-dir[=DIR] Set the path to librabbitmq install prefix.], yes)
-
-
-if test "$PHP_AMQP" != "no"; then
- dnl Write more examples of tests here...
-
- AC_MSG_RESULT($PHP_AMQP)
-
- dnl # --with-amqp -> check with-path
-
- SEARCH_FOR="amqp_framing.h"
-
- AC_MSG_CHECKING([for amqp files in default path])
- if test "$PHP_LIBRABBITMQ_DIR" != "no" && test "$PHP_LIBRABBITMQ_DIR" != "yes"; then
- for i in $PHP_LIBRABBITMQ_DIR; do
- if test -r $i/include/$SEARCH_FOR;
- then
- AMQP_DIR=$i
- AC_MSG_RESULT(found in $i)
- break
- fi
- done
- else
- for i in $PHP_AMQP /usr/local /usr ; do
- if test -r $i/include/$SEARCH_FOR;
- then
- AMQP_DIR=$i
- AC_MSG_RESULT(found in $i)
- break
- fi
- done
- fi
-
- if test -z "$AMQP_DIR"; then
- AC_MSG_RESULT([not found])
- AC_MSG_ERROR([Please reinstall the librabbitmq distribution itself or (re)install librabbitmq development package if it available in your system])
- fi
-
- dnl # --with-amqp -> add include path
- PHP_ADD_INCLUDE($AMQP_DIR/include)
-
- old_CFLAGS=$CFLAGS
- CFLAGS="-I$AMQP_DIR/include"
-
- AC_CACHE_CHECK(for librabbitmq version, ac_cv_librabbitmq_version, [
- AC_TRY_RUN([
- #include "amqp.h"
- #include <stdio.h>
-
- int main ()
- {
- FILE *testfile = fopen("conftestval", "w");
-
- if (NULL == testfile) {
- return 1;
- }
-
- fprintf(testfile, "%s\n", AMQ_VERSION_STRING);
- fclose(testfile);
-
- return 0;
- }
- ], [ac_cv_librabbitmq_version=`cat ./conftestval`], [ac_cv_librabbitmq_version=NONE], [ac_cv_librabbitmq_version=NONE])
- ])
-
- CFLAGS=$old_CFLAGS
-
- if test "$ac_cv_librabbitmq_version" != "NONE"; then
- ac_IFS=$IFS
- IFS=.
- set $ac_cv_librabbitmq_version
- IFS=$ac_IFS
- LIBRABBITMQ_API_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
-
- if test "$LIBRABBITMQ_API_VERSION" -lt 5001 ; then
- AC_MSG_ERROR([librabbitmq must be version 0.5.2 or greater, $ac_cv_librabbitmq_version version given instead])
- fi
-
- if test "$LIBRABBITMQ_API_VERSION" -lt 6000 ; then
- AC_MSG_WARN([librabbitmq 0.6.0 or greater recommended, current version is $ac_cv_librabbitmq_version])
- fi
- else
- AC_MSG_ERROR([could not determine librabbitmq version])
- fi
-
- dnl # --with-amqp -> check for lib and symbol presence
- LIBNAME=rabbitmq
- LIBSYMBOL=rabbitmq
-
- PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $AMQP_DIR/$PHP_LIBDIR, AMQP_SHARED_LIBADD)
- PHP_SUBST(AMQP_SHARED_LIBADD)
-
- if test -z "$TRAVIS" ; then
- type git &>/dev/null
-
- if test $? -eq 0 ; then
- git describe --abbrev=0 --tags &>/dev/null
-
- if test $? -eq 0 ; then
- AC_DEFINE_UNQUOTED([PHP_AMQP_VERSION], ["`git describe --abbrev=0 --tags`-`git rev-parse --abbrev-ref HEAD`-dev"], [git version])
- fi
-
- git rev-parse --short HEAD &>/dev/null
-
- if test $? -eq 0 ; then
- AC_DEFINE_UNQUOTED([PHP_AMQP_REVISION], ["`git rev-parse --short HEAD`"], [git revision])
- fi
- else
- AC_MSG_NOTICE([git not installed. Cannot obtain php_amqp version tag. Install git.])
- fi
- fi
-
- AMQP_SOURCES="amqp.c amqp_exchange.c amqp_queue.c amqp_connection.c amqp_connection_resource.c amqp_channel.c amqp_envelope.c"
-
- PHP_NEW_EXTENSION(amqp, $AMQP_SOURCES, $ext_shared)
-fi
diff --git a/amqp-1.7.0/CREDITS b/amqp-1.7.1/CREDITS
similarity index 100%
rename from amqp-1.7.0/CREDITS
rename to amqp-1.7.1/CREDITS
diff --git a/amqp-1.7.0/LICENSE b/amqp-1.7.1/LICENSE
similarity index 100%
rename from amqp-1.7.0/LICENSE
rename to amqp-1.7.1/LICENSE
diff --git a/amqp-1.7.0/amqp.c b/amqp-1.7.1/amqp.c
similarity index 100%
rename from amqp-1.7.0/amqp.c
rename to amqp-1.7.1/amqp.c
diff --git a/amqp-1.7.0/amqp_channel.c b/amqp-1.7.1/amqp_channel.c
similarity index 100%
rename from amqp-1.7.0/amqp_channel.c
rename to amqp-1.7.1/amqp_channel.c
diff --git a/amqp-1.7.0/amqp_channel.h b/amqp-1.7.1/amqp_channel.h
similarity index 100%
rename from amqp-1.7.0/amqp_channel.h
rename to amqp-1.7.1/amqp_channel.h
diff --git a/amqp-1.7.0/amqp_connection.c b/amqp-1.7.1/amqp_connection.c
similarity index 99%
rename from amqp-1.7.0/amqp_connection.c
rename to amqp-1.7.1/amqp_connection.c
index 3a14f0e..3f2e5fe 100644
--- a/amqp-1.7.0/amqp_connection.c
+++ b/amqp-1.7.1/amqp_connection.c
@@ -1,1298 +1,1298 @@
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2007 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Alexandre Kalendarev akalend@mail.ru Copyright (c) 2009-2010 |
| Lead: |
| - Pieter de Zwart |
| Maintainers: |
| - Brad Rodriguez |
| - Jonathan Tansavatdi |
+----------------------------------------------------------------------+
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "zend_exceptions.h"
#ifdef PHP_WIN32
# include "win32/php_stdint.h"
# include "win32/signal.h"
#else
# include <signal.h>
# include <stdint.h>
#endif
#include <amqp.h>
#include <amqp_framing.h>
#include <amqp_tcp_socket.h>
#ifdef PHP_WIN32
# include "win32/unistd.h"
#else
# include <unistd.h>
#endif
#include "php_amqp.h"
#include "amqp_channel.h"
#include "amqp_connection_resource.h"
#include "amqp_connection.h"
#ifndef E_DEPRECATED
#define E_DEPRECATED E_WARNING
#endif
zend_class_entry *amqp_connection_class_entry;
#define this_ce amqp_connection_class_entry
zend_object_handlers amqp_connection_object_handlers;
static int php_amqp_connection_resource_deleter(PHP5to7_zend_resource_le_t *el, amqp_connection_resource *connection_resource TSRMLS_DC)
{
if (Z_RES_P(el)->ptr == connection_resource) {
return ZEND_HASH_APPLY_REMOVE | ZEND_HASH_APPLY_STOP;
}
return ZEND_HASH_APPLY_KEEP;
}
static PHP5to7_param_str_len_type_t php_amqp_get_connection_hash(amqp_connection_params *params, char **hash) {
return spprintf(hash,
0,
"amqp_conn_res_h:%s_p:%d_v:%s_l:%s_p:%s_f:%d_c:%d_h:%d",
params->host,
params->port,
params->vhost,
params->login,
params->password,
params->frame_max,
params->channel_max,
params->heartbeat
);
}
static void php_amqp_cleanup_connection_resource(amqp_connection_resource *connection_resource TSRMLS_DC)
{
if (!connection_resource) {
return;
}
PHP5to7_zend_resource_t resource = connection_resource->resource;
connection_resource->parent->connection_resource = NULL;
connection_resource->parent = NULL;
if (connection_resource->is_dirty) {
if (connection_resource->is_persistent) {
zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t)php_amqp_connection_resource_deleter, (void*)connection_resource TSRMLS_CC);
}
zend_list_delete(resource);
} else {
if (connection_resource->is_persistent) {
connection_resource->resource = PHP5to7_ZEND_RESOURCE_EMPTY;
}
if (connection_resource->resource != PHP5to7_ZEND_RESOURCE_EMPTY) {
zend_list_delete(resource);
}
}
}
static void php_amqp_disconnect(amqp_connection_resource *resource TSRMLS_DC)
{
php_amqp_prepare_for_disconnect(resource TSRMLS_CC);
php_amqp_cleanup_connection_resource(resource TSRMLS_CC);
}
void php_amqp_disconnect_force(amqp_connection_resource *resource TSRMLS_DC)
{
php_amqp_prepare_for_disconnect(resource TSRMLS_CC);
resource->is_dirty = '\1';
php_amqp_cleanup_connection_resource(resource TSRMLS_CC);
}
/**
* php_amqp_connect
* handles connecting to amqp
* called by connect(), pconnect(), reconnect(), preconnect()
*/
int php_amqp_connect(amqp_connection_object *connection, zend_bool persistent, INTERNAL_FUNCTION_PARAMETERS)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
char *key = NULL;
PHP5to7_param_str_len_type_t key_len = 0;
if (connection->connection_resource) {
/* Clean up old memory allocations which are now invalid (new connection) */
php_amqp_cleanup_connection_resource(connection->connection_resource TSRMLS_CC);
}
assert(connection->connection_resource == NULL);
amqp_connection_params connection_params;
connection_params.host = PHP_AMQP_READ_THIS_PROP_STR("host");
connection_params.port = (int)PHP_AMQP_READ_THIS_PROP_LONG("port");
connection_params.vhost = PHP_AMQP_READ_THIS_PROP_STR("vhost");
connection_params.login = PHP_AMQP_READ_THIS_PROP_STR("login");
connection_params.password = PHP_AMQP_READ_THIS_PROP_STR("password");
connection_params.frame_max = (int) PHP_AMQP_READ_THIS_PROP_LONG("frame_max");
connection_params.channel_max = (int) PHP_AMQP_READ_THIS_PROP_LONG("channel_max");
connection_params.heartbeat = (int) PHP_AMQP_READ_THIS_PROP_LONG("heartbeat");
connection_params.read_timeout = PHP_AMQP_READ_THIS_PROP_DOUBLE("read_timeout");
connection_params.write_timeout = PHP_AMQP_READ_THIS_PROP_DOUBLE("write_timeout");
connection_params.connect_timeout = PHP_AMQP_READ_THIS_PROP_DOUBLE("connect_timeout");
if (persistent) {
PHP5to7_zend_resource_store_t *le = PHP5to7_ZEND_RESOURCE_EMPTY;
/* Look for an established resource */
key_len = php_amqp_get_connection_hash(&connection_params, &key);
if (PHP5to7_ZEND_HASH_STR_FIND_PTR(&EG(persistent_list), key, key_len, le)) {
efree(key);
if (le->type != le_amqp_connection_resource_persistent) {
/* hash conflict, given name associate with non-amqp persistent connection resource */
return 0;
}
/* An entry for this connection resource already exists */
/* Stash the connection resource in the connection */
connection->connection_resource = le->ptr;
if (connection->connection_resource->resource != PHP5to7_ZEND_RESOURCE_EMPTY) {
/* resource in use! */
connection->connection_resource = NULL;
zend_throw_exception(amqp_connection_exception_class_entry, "There are already established persistent connection to the same resource.", 0 TSRMLS_CC);
return 0;
}
connection->connection_resource->resource = PHP5to7_ZEND_REGISTER_RESOURCE(connection->connection_resource, persistent ? le_amqp_connection_resource_persistent : le_amqp_connection_resource);
connection->connection_resource->parent = connection;
/* Set desired timeouts */
if (php_amqp_set_resource_read_timeout(connection->connection_resource, PHP_AMQP_READ_THIS_PROP_DOUBLE("read_timeout") TSRMLS_CC) == 0
|| php_amqp_set_resource_write_timeout(connection->connection_resource, PHP_AMQP_READ_THIS_PROP_DOUBLE("write_timeout") TSRMLS_CC) == 0) {
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
return 0;
}
/* Set connection status to connected */
connection->connection_resource->is_connected = '\1';
connection->connection_resource->is_persistent = persistent;
return 1;
}
efree(key);
}
connection->connection_resource = connection_resource_constructor(&connection_params, persistent TSRMLS_CC);
if (connection->connection_resource == NULL) {
return 0;
}
connection->connection_resource->resource = PHP5to7_ZEND_REGISTER_RESOURCE(connection->connection_resource, persistent ? le_amqp_connection_resource_persistent : le_amqp_connection_resource);
connection->connection_resource->parent = connection;
/* Set connection status to connected */
connection->connection_resource->is_connected = '\1';
if (persistent) {
connection->connection_resource->is_persistent = persistent;
key_len = php_amqp_get_connection_hash(&connection_params, &key);
PHP5to7_zend_resource_store_t new_le;
/* Store a reference in the persistence list */
new_le.ptr = connection->connection_resource;
new_le.type = persistent ? le_amqp_connection_resource_persistent : le_amqp_connection_resource;
if (!PHP5to7_ZEND_HASH_STR_UPD_MEM(&EG(persistent_list), key, key_len, new_le, sizeof(PHP5to7_zend_resource_store_t))) {
efree(key);
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
return 0;
}
efree(key);
}
return 1;
}
void amqp_connection_free(PHP5to7_obj_free_zend_object *object TSRMLS_DC)
{
amqp_connection_object *connection = PHP_AMQP_FETCH_CONNECTION(object);
if (connection->connection_resource) {
php_amqp_disconnect(connection->connection_resource TSRMLS_CC);
}
zend_object_std_dtor(&connection->zo TSRMLS_CC);
#if PHP_MAJOR_VERSION < 7
efree(object);
#endif
}
PHP5to7_zend_object_value amqp_connection_ctor(zend_class_entry *ce TSRMLS_DC)
{
amqp_connection_object* connection = PHP5to7_ECALLOC_CONNECTION_OBJECT(ce);
zend_object_std_init(&connection->zo, ce TSRMLS_CC);
AMQP_OBJECT_PROPERTIES_INIT(connection->zo, ce);
#if PHP_MAJOR_VERSION >=7
connection->zo.handlers = &amqp_connection_object_handlers;
return &connection->zo;
#else
PHP5to7_zend_object_value new_value;
new_value.handle = zend_objects_store_put(
connection,
NULL,
(zend_objects_free_object_storage_t) amqp_connection_free,
NULL TSRMLS_CC
);
new_value.handlers = zend_get_std_object_handlers();
return new_value;
#endif
}
/* {{{ proto AMQPConnection::__construct([array optional])
* The array can contain 'host', 'port', 'login', 'password', 'vhost', 'read_timeout', 'write_timeout', 'connect_timeout' and 'timeout' (deprecated) indexes
*/
PHP_METHOD(amqp_connection_class, __construct)
{
zval* ini_arr = NULL;
PHP5to7_zval_t *zdata = NULL;
/* Parse out the method parameters */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a", &ini_arr) == FAILURE) {
return;
}
/* Pull the login out of the $params array */
zdata = NULL;
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "login", sizeof("login"), zdata)) {
// TODO: check whether we need separate zval
convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
}
/* Validate the given login */
if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
zend_update_property(this_ce, getThis(), ZEND_STRL("login"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);
} else {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'login' exceeds 128 character limit.", 0 TSRMLS_CC);
return;
}
} else {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), INI_STR("amqp.login"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.login")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
}
/* Pull the password out of the $params array */
zdata = NULL;
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "password", sizeof("password"), zdata)) {
convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
}
/* Validate the given password */
if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
} else {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'password' exceeds 128 character limit.", 0 TSRMLS_CC);
return;
}
} else {
- zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.login"))) TSRMLS_CC);
+ zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), INI_STR("amqp.password"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.password")) > 128 ? 128 : strlen(INI_STR("amqp.password"))) TSRMLS_CC);
}
/* Pull the host out of the $params array */
zdata = NULL;
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "host", sizeof("host"), zdata)) {
convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
}
/* Validate the given host */
if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
} else {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'host' exceeds 128 character limit.", 0 TSRMLS_CC);
return;
}
} else {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), INI_STR("amqp.host"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.host")) > 128 ? 128 : strlen(INI_STR("amqp.host"))) TSRMLS_CC);
}
/* Pull the vhost out of the $params array */
zdata = NULL;
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "vhost", sizeof("vhost"), zdata)) {
convert_to_string(PHP5to7_MAYBE_DEREF(zdata));
}
/* Validate the given vhost */
if (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
} else {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'vhost' exceeds 128 character limit.", 0 TSRMLS_CC);
return;
}
} else {
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), INI_STR("amqp.vhost"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR("amqp.vhost")) > 128 ? 128 : strlen(INI_STR("amqp.vhost"))) TSRMLS_CC);
}
zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), INI_INT("amqp.port") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "port", sizeof("port"), zdata)) {
convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "read_timeout", sizeof("read_timeout"), zdata)) {
convert_to_double(PHP5to7_MAYBE_DEREF(zdata));
if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'read_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
} else {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "timeout", sizeof("timeout"), zdata)) {
/* 'read_timeout' takes precedence on 'timeout' but users have to know this */
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Parameter 'timeout' is deprecated, 'read_timeout' used instead");
}
} else if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "timeout", sizeof("timeout"), zdata)) {
php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "Parameter 'timeout' is deprecated; use 'read_timeout' instead");
convert_to_double(PHP5to7_MAYBE_DEREF(zdata));
if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
} else {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
} else {
assert(DEFAULT_TIMEOUT != NULL);
if (strcmp(DEFAULT_TIMEOUT, INI_STR("amqp.timeout")) != 0) {
php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "INI setting 'amqp.timeout' is deprecated; use 'amqp.read_timeout' instead");
if (strcmp(DEFAULT_READ_TIMEOUT, INI_STR("amqp.read_timeout")) == 0) {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.timeout") TSRMLS_CC);
} else {
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "INI setting 'amqp.read_timeout' will be used instead of 'amqp.timeout'");
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
}
} else {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), INI_FLT("amqp.read_timeout") TSRMLS_CC);
}
}
zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), INI_FLT("amqp.write_timeout") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "write_timeout", sizeof("write_timeout"), zdata)) {
convert_to_double(PHP5to7_MAYBE_DEREF(zdata));
if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'write_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
} else {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
}
zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), INI_FLT("amqp.connect_timeout") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "connect_timeout", sizeof("connect_timeout"), zdata)) {
convert_to_double(PHP5to7_MAYBE_DEREF(zdata));
if (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'connect_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
} else {
zend_update_property_double(this_ce, getThis(), ZEND_STRL("connect_timeout"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
}
zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), INI_INT("amqp.channel_max") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "channel_max", sizeof("channel_max"), zdata)) {
convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
if (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_CHANNELS) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'channel_max' is out of range.", 0 TSRMLS_CC);
} else {
if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);
} else {
zend_update_property_long(this_ce, getThis(), ZEND_STRL("channel_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
}
}
zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), INI_INT("amqp.frame_max") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "frame_max", sizeof("frame_max"), zdata)) {
convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
if (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_FRAME) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'frame_max' is out of range.", 0 TSRMLS_CC);
} else {
if(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {
zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);
} else {
zend_update_property_long(this_ce, getThis(), ZEND_STRL("frame_max"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
}
}
zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), INI_INT("amqp.heartbeat") TSRMLS_CC);
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "heartbeat", sizeof("heartbeat"), zdata)) {
convert_to_long(PHP5to7_MAYBE_DEREF(zdata));
if (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_HEARTBEAT) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'heartbeat' is out of range.", 0 TSRMLS_CC);
} else {
zend_update_property_long(this_ce, getThis(), ZEND_STRL("heartbeat"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);
}
}
}
/* }}} */
/* {{{ proto amqp::isConnected()
check amqp connection */
PHP_METHOD(amqp_connection_class, isConnected)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
/* If the channel_connect is 1, we have a connection */
if (connection->connection_resource != NULL && connection->connection_resource->is_connected) {
RETURN_TRUE;
}
/* We have no connection */
RETURN_FALSE;
}
/* }}} */
/* {{{ proto amqp::connect()
create amqp connection */
PHP_METHOD(amqp_connection_class, connect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (connection->connection_resource && connection->connection_resource->is_connected) {
if (connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to start transient connection while persistent transient one already established. Continue.");
}
RETURN_TRUE;
}
/* Actually connect this resource to the broker */
RETURN_BOOL(php_amqp_connect(connection, 0, INTERNAL_FUNCTION_PARAM_PASSTHRU));
}
/* }}} */
/* {{{ proto amqp::connect()
create amqp connection */
PHP_METHOD(amqp_connection_class, pconnect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (connection->connection_resource && connection->connection_resource->is_connected) {
assert(connection->connection_resource != NULL);
if (!connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to start persistent connection while transient one already established. Continue.");
}
RETURN_TRUE;
}
/* Actually connect this resource to the broker or use stored connection */
RETURN_BOOL(php_amqp_connect(connection, 1, INTERNAL_FUNCTION_PARAM_PASSTHRU));
}
/* }}} */
/* {{{ proto amqp:pdisconnect()
destroy amqp persistent connection */
PHP_METHOD(amqp_connection_class, pdisconnect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (!connection->connection_resource || !connection->connection_resource->is_connected) {
RETURN_TRUE;
}
assert(connection->connection_resource != NULL);
if (!connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to close persistent connection while transient one already established. Abort.");
RETURN_FALSE;
}
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::disconnect()
destroy amqp connection */
PHP_METHOD(amqp_connection_class, disconnect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (!connection->connection_resource || !connection->connection_resource->is_connected) {
RETURN_TRUE;
}
if (connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to close transient connection while persistent one already established. Abort.");
RETURN_FALSE;
}
assert(connection->connection_resource != NULL);
php_amqp_disconnect(connection->connection_resource TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::reconnect()
recreate amqp connection */
PHP_METHOD(amqp_connection_class, reconnect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (connection->connection_resource && connection->connection_resource->is_connected) {
assert(connection->connection_resource != NULL);
if (connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to reconnect persistent connection while transient one already established. Abort.");
RETURN_FALSE;
}
php_amqp_disconnect(connection->connection_resource TSRMLS_CC);
}
RETURN_BOOL(php_amqp_connect(connection, 0, INTERNAL_FUNCTION_PARAM_PASSTHRU));
}
/* }}} */
/* {{{ proto amqp::preconnect()
recreate amqp connection */
PHP_METHOD(amqp_connection_class, preconnect)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (connection->connection_resource && connection->connection_resource->is_connected) {
assert(connection->connection_resource != NULL);
if (!connection->connection_resource->is_persistent) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to reconnect transient connection while persistent one already established. Abort.");
RETURN_FALSE;
}
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
}
RETURN_BOOL(php_amqp_connect(connection, 1, INTERNAL_FUNCTION_PARAM_PASSTHRU));
}
/* }}} */
/* {{{ proto amqp::getLogin()
get the login */
PHP_METHOD(amqp_connection_class, getLogin)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("login");
}
/* }}} */
/* {{{ proto amqp::setLogin(string login)
set the login */
PHP_METHOD(amqp_connection_class, setLogin)
{
char *login = NULL; PHP5to7_param_str_len_type_t login_len = 0;
/* Get the login from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &login, &login_len) == FAILURE) {
return;
}
/* Validate login length */
if (login_len > 128) {
zend_throw_exception(amqp_connection_exception_class_entry, "Invalid 'login' given, exceeds 128 characters limit.", 0 TSRMLS_CC);
return;
}
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("login"), login, login_len TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getPassword()
get the password */
PHP_METHOD(amqp_connection_class, getPassword)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("password");
}
/* }}} */
/* {{{ proto amqp::setPassword(string password)
set the password */
PHP_METHOD(amqp_connection_class, setPassword)
{
char *password = NULL; PHP5to7_param_str_len_type_t password_len = 0;
/* Get the password from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &password, &password_len) == FAILURE) {
return;
}
/* Validate password length */
if (password_len > 128) {
zend_throw_exception(amqp_connection_exception_class_entry, "Invalid 'password' given, exceeds 128 characters limit.", 0 TSRMLS_CC);
return;
}
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("password"), password, password_len TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getHost()
get the host */
PHP_METHOD(amqp_connection_class, getHost)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("host");
}
/* }}} */
/* {{{ proto amqp::setHost(string host)
set the host */
PHP_METHOD(amqp_connection_class, setHost)
{
char *host = NULL; PHP5to7_param_str_len_type_t host_len = 0;
/* Get the host from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &host, &host_len) == FAILURE) {
return;
}
/* Validate host length */
if (host_len > 1024) {
zend_throw_exception(amqp_connection_exception_class_entry, "Invalid 'host' given, exceeds 1024 character limit.", 0 TSRMLS_CC);
return;
}
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("host"), host, host_len TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getPort()
get the port */
PHP_METHOD(amqp_connection_class, getPort)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("port");
}
/* }}} */
/* {{{ proto amqp::setPort(mixed port)
set the port */
PHP_METHOD(amqp_connection_class, setPort)
{
zval *zvalPort;
int port;
/* Get the port from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zvalPort) == FAILURE) {
return;
}
/* Parse out the port*/
switch (Z_TYPE_P(zvalPort)) {
case IS_DOUBLE:
port = (int)Z_DVAL_P(zvalPort);
break;
case IS_LONG:
port = (int)Z_LVAL_P(zvalPort);
break;
case IS_STRING:
convert_to_long(zvalPort);
port = (int)Z_LVAL_P(zvalPort);
break;
default:
port = 0;
}
/* Check the port value */
if (port <= 0 || port > 65535) {
zend_throw_exception(amqp_connection_exception_class_entry, "Invalid port given. Value must be between 1 and 65535.", 0 TSRMLS_CC);
return;
}
zend_update_property_long(this_ce, getThis(), ZEND_STRL("port"), port TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getVhost()
get the vhost */
PHP_METHOD(amqp_connection_class, getVhost)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("vhost");
}
/* }}} */
/* {{{ proto amqp::setVhost(string vhost)
set the vhost */
PHP_METHOD(amqp_connection_class, setVhost)
{
char *vhost = NULL; PHP5to7_param_str_len_type_t vhost_len = 0;
/* Get the vhost from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &vhost, &vhost_len) == FAILURE) {
return;
}
/* Validate vhost length */
if (vhost_len > 128) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'vhost' exceeds 128 characters limit.", 0 TSRMLS_CC);
return;
}
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("vhost"), vhost, vhost_len TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getTimeout()
@deprecated
get the timeout */
PHP_METHOD(amqp_connection_class, getTimeout)
{
php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "AMQPConnection::getTimeout() method is deprecated; use AMQPConnection::getReadTimeout() instead");
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("read_timeout");
}
/* }}} */
/* {{{ proto amqp::setTimeout(double timeout)
@deprecated
set the timeout */
PHP_METHOD(amqp_connection_class, setTimeout)
{
amqp_connection_object *connection;
double read_timeout;
php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead");
/* Get the timeout from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &read_timeout) == FAILURE) {
return;
}
/* Validate timeout */
if (read_timeout < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
return;
}
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
if (connection->connection_resource && connection->connection_resource->is_connected) {
if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
RETURN_FALSE;
}
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getReadTimeout()
get the read timeout */
PHP_METHOD(amqp_connection_class, getReadTimeout)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("read_timeout");
}
/* }}} */
/* {{{ proto amqp::setReadTimeout(double timeout)
set read timeout */
PHP_METHOD(amqp_connection_class, setReadTimeout)
{
amqp_connection_object *connection;
double read_timeout;
/* Get the timeout from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &read_timeout) == FAILURE) {
return;
}
/* Validate timeout */
if (read_timeout < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'read_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
return;
}
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
zend_update_property_double(this_ce, getThis(), ZEND_STRL("read_timeout"), read_timeout TSRMLS_CC);
if (connection->connection_resource && connection->connection_resource->is_connected) {
if (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
RETURN_FALSE;
}
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getWriteTimeout()
get write timeout */
PHP_METHOD(amqp_connection_class, getWriteTimeout)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("write_timeout");
}
/* }}} */
/* {{{ proto amqp::setWriteTimeout(double timeout)
set write timeout */
PHP_METHOD(amqp_connection_class, setWriteTimeout)
{
amqp_connection_object *connection;
double write_timeout;
/* Get the timeout from the method params */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &write_timeout) == FAILURE) {
return;
}
/* Validate timeout */
if (write_timeout < 0) {
zend_throw_exception(amqp_connection_exception_class_entry, "Parameter 'write_timeout' must be greater than or equal to zero.", 0 TSRMLS_CC);
return;
}
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
zend_update_property_double(this_ce, getThis(), ZEND_STRL("write_timeout"), write_timeout TSRMLS_CC);
if (connection->connection_resource && connection->connection_resource->is_connected) {
if (php_amqp_set_resource_write_timeout(connection->connection_resource, write_timeout TSRMLS_CC) == 0) {
php_amqp_disconnect_force(connection->connection_resource TSRMLS_CC);
RETURN_FALSE;
}
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto amqp::getUsedChannels()
Get max used channels number */
PHP_METHOD(amqp_connection_class, getUsedChannels)
{
amqp_connection_object *connection;
/* Get the timeout from the method params */
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (!connection->connection_resource || !connection->connection_resource->is_connected) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Connection is not connected.");
RETURN_LONG(0);
}
RETURN_LONG(connection->connection_resource->used_slots);
}
/* }}} */
/* {{{ proto amqp::getMaxChannels()
Get max supported channels number per connection */
PHP_METHOD(amqp_connection_class, getMaxChannels)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
if (connection->connection_resource && connection->connection_resource->is_connected) {
RETURN_LONG(connection->connection_resource->max_slots);
}
PHP_AMQP_RETURN_THIS_PROP("channel_max");
}
/* }}} */
/* {{{ proto amqp::getMaxFrameSize()
Get max supported frame size per connection in bytes */
PHP_METHOD(amqp_connection_class, getMaxFrameSize)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
#if AMQP_VERSION_MAJOR * 100 + AMQP_VERSION_MINOR * 10 + AMQP_VERSION_PATCH > 52
if (connection->connection_resource && connection->connection_resource->is_connected) {
RETURN_LONG(amqp_get_frame_max(connection->connection_resource->connection_state));
}
#endif
PHP_AMQP_RETURN_THIS_PROP("frame_max");
}
/* }}} */
/* {{{ proto amqp::getHeartbeatInterval()
Get number of seconds between heartbeats of the connection in seconds */
PHP_METHOD(amqp_connection_class, getHeartbeatInterval)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
/* Get the connection object out of the store */
connection = PHP_AMQP_GET_CONNECTION(getThis());
#if AMQP_VERSION_MAJOR * 100 + AMQP_VERSION_MINOR * 10 + AMQP_VERSION_PATCH > 52
if (connection->connection_resource != NULL
&& connection->connection_resource->is_connected != '\0') {
RETURN_LONG(amqp_get_heartbeat(connection->connection_resource->connection_state));
}
#endif
PHP_AMQP_RETURN_THIS_PROP("heartbeat");
}
/* }}} */
/* {{{ proto amqp::isPersistent()
check whether amqp connection is persistent */
PHP_METHOD(amqp_connection_class, isPersistent)
{
amqp_connection_object *connection;
PHP_AMQP_NOPARAMS();
connection = PHP_AMQP_GET_CONNECTION(getThis());
RETURN_BOOL(connection->connection_resource && connection->connection_resource->is_persistent);
}
/* }}} */
/* amqp_connection_class ARG_INFO definition */
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class__construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_ARG_ARRAY_INFO(0, credentials, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_isConnected, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_connect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_pconnect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_pdisconnect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_disconnect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_reconnect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_preconnect, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getLogin, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setLogin, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, login)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getPassword, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setPassword, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, password)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getHost, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setHost, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, host)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getPort, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setPort, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, port)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getVhost, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setVhost, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, vhost)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, timeout)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getReadTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setReadTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, timeout)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getWriteTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_setWriteTimeout, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, timeout)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getUsedChannels, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getMaxChannels, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getMaxFrameSize, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_getHeartbeatInterval, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_connection_class_isPersistent, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
zend_function_entry amqp_connection_class_functions[] = {
PHP_ME(amqp_connection_class, __construct, arginfo_amqp_connection_class__construct, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, isConnected, arginfo_amqp_connection_class_isConnected, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, connect, arginfo_amqp_connection_class_connect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, pconnect, arginfo_amqp_connection_class_pconnect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, pdisconnect, arginfo_amqp_connection_class_pdisconnect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, disconnect, arginfo_amqp_connection_class_disconnect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, reconnect, arginfo_amqp_connection_class_reconnect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, preconnect, arginfo_amqp_connection_class_preconnect, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getLogin, arginfo_amqp_connection_class_getLogin, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setLogin, arginfo_amqp_connection_class_setLogin, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getPassword, arginfo_amqp_connection_class_getPassword, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setPassword, arginfo_amqp_connection_class_setPassword, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getHost, arginfo_amqp_connection_class_getHost, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setHost, arginfo_amqp_connection_class_setHost, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getPort, arginfo_amqp_connection_class_getPort, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setPort, arginfo_amqp_connection_class_setPort, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getVhost, arginfo_amqp_connection_class_getVhost, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setVhost, arginfo_amqp_connection_class_setVhost, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getTimeout, arginfo_amqp_connection_class_getTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setTimeout, arginfo_amqp_connection_class_setTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getReadTimeout, arginfo_amqp_connection_class_getReadTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setReadTimeout, arginfo_amqp_connection_class_setReadTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getWriteTimeout, arginfo_amqp_connection_class_getWriteTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, setWriteTimeout, arginfo_amqp_connection_class_setWriteTimeout, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getUsedChannels, arginfo_amqp_connection_class_getUsedChannels, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getMaxChannels, arginfo_amqp_connection_class_getMaxChannels, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, isPersistent, arginfo_amqp_connection_class_isPersistent, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getHeartbeatInterval, arginfo_amqp_connection_class_getHeartbeatInterval, ZEND_ACC_PUBLIC)
PHP_ME(amqp_connection_class, getMaxFrameSize, arginfo_amqp_connection_class_getMaxFrameSize, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL} /* Must be the last line in amqp_functions[] */
};
PHP_MINIT_FUNCTION(amqp_connection)
{
zend_class_entry ce;
INIT_CLASS_ENTRY(ce, "AMQPConnection", amqp_connection_class_functions);
ce.create_object = amqp_connection_ctor;
this_ce = zend_register_internal_class(&ce TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("login"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("password"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("host"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("vhost"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("port"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("read_timeout"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("write_timeout"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("connect_timeout"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("channel_max"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("frame_max"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("heartbeat"), ZEND_ACC_PRIVATE TSRMLS_CC);
#if PHP_MAJOR_VERSION >=7
memcpy(&amqp_connection_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
amqp_connection_object_handlers.offset = XtOffsetOf(amqp_connection_object, zo);
amqp_connection_object_handlers.free_obj = amqp_connection_free;
#endif
return SUCCESS;
}
/*
*Local variables:
*tab-width: 4
*c-basic-offset: 4
*End:
*vim600: noet sw=4 ts=4 fdm=marker
*vim<6
*/
diff --git a/amqp-1.7.0/amqp_connection.h b/amqp-1.7.1/amqp_connection.h
similarity index 100%
rename from amqp-1.7.0/amqp_connection.h
rename to amqp-1.7.1/amqp_connection.h
diff --git a/amqp-1.7.0/amqp_connection_resource.c b/amqp-1.7.1/amqp_connection_resource.c
similarity index 100%
rename from amqp-1.7.0/amqp_connection_resource.c
rename to amqp-1.7.1/amqp_connection_resource.c
diff --git a/amqp-1.7.0/amqp_connection_resource.h b/amqp-1.7.1/amqp_connection_resource.h
similarity index 100%
rename from amqp-1.7.0/amqp_connection_resource.h
rename to amqp-1.7.1/amqp_connection_resource.h
diff --git a/amqp-1.7.0/amqp_envelope.c b/amqp-1.7.1/amqp_envelope.c
similarity index 100%
rename from amqp-1.7.0/amqp_envelope.c
rename to amqp-1.7.1/amqp_envelope.c
diff --git a/amqp-1.7.0/amqp_envelope.h b/amqp-1.7.1/amqp_envelope.h
similarity index 100%
rename from amqp-1.7.0/amqp_envelope.h
rename to amqp-1.7.1/amqp_envelope.h
diff --git a/amqp-1.7.0/amqp_exchange.c b/amqp-1.7.1/amqp_exchange.c
similarity index 99%
rename from amqp-1.7.0/amqp_exchange.c
rename to amqp-1.7.1/amqp_exchange.c
index 1dd36fb..65a25ff 100644
--- a/amqp-1.7.0/amqp_exchange.c
+++ b/amqp-1.7.1/amqp_exchange.c
@@ -1,950 +1,950 @@
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2007 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Alexandre Kalendarev akalend@mail.ru Copyright (c) 2009-2010 |
| Lead: |
| - Pieter de Zwart |
| Maintainers: |
| - Brad Rodriguez |
| - Jonathan Tansavatdi |
+----------------------------------------------------------------------+
*/
/* $Id: amqp_exchange.c 327551 2012-09-09 03:49:34Z pdezwart $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "zend_exceptions.h"
#ifdef PHP_WIN32
# include "win32/php_stdint.h"
# include "win32/signal.h"
#else
# include <signal.h>
# include <stdint.h>
#endif
#include <amqp.h>
#include <amqp_framing.h>
#ifdef PHP_WIN32
# include "win32/unistd.h"
#else
# include <unistd.h>
#endif
#include "php_amqp.h"
#include "amqp_connection.h"
#include "amqp_channel.h"
#include "amqp_exchange.h"
zend_class_entry *amqp_exchange_class_entry;
#define this_ce amqp_exchange_class_entry
/* {{{ proto AMQPExchange::__construct(AMQPChannel channel);
create Exchange */
PHP_METHOD(amqp_exchange_class, __construct)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP5to7_zval_t arguments PHP5to7_MAYBE_SET_TO_NULL;
zval *channelObj;
amqp_channel_resource *channel_resource;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &channelObj) == FAILURE) {
return;
}
PHP5to7_MAYBE_INIT(arguments);
PHP5to7_ARRAY_INIT(arguments);
zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);
PHP5to7_MAYBE_DESTROY(arguments);
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not create exchange.");
zend_update_property(this_ce, getThis(), ZEND_STRL("channel"), channelObj TSRMLS_CC);
zend_update_property(this_ce, getThis(), ZEND_STRL("connection"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, "connection") TSRMLS_CC);
}
/* }}} */
/* {{{ proto AMQPExchange::getName()
Get the exchange name */
PHP_METHOD(amqp_exchange_class, getName)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
if (PHP_AMQP_READ_THIS_PROP_STRLEN("name") > 0) {
PHP_AMQP_RETURN_THIS_PROP("name");
} else {
/* BC */
RETURN_FALSE;
}
}
/* }}} */
/* {{{ proto AMQPExchange::setName(string name)
Set the exchange name */
PHP_METHOD(amqp_exchange_class, setName)
{
char *name = NULL;
PHP5to7_param_str_len_type_t name_len = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
return;
}
/* Verify that the name is not null and not an empty string */
if (name_len > 255) {
zend_throw_exception(amqp_exchange_exception_class_entry, "Invalid exchange name given, must be less than 255 characters long.", 0 TSRMLS_CC);
return;
}
/* Set the exchange name */
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("name"), name, name_len TSRMLS_CC);
}
/* }}} */
/* {{{ proto AMQPExchange::getFlags()
Get the exchange parameters */
PHP_METHOD(amqp_exchange_class, getFlags)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP5to7_param_long_type_t flagBitmask = 0;
PHP_AMQP_NOPARAMS();
if (PHP_AMQP_READ_THIS_PROP_BOOL("passive")) {
flagBitmask |= AMQP_PASSIVE;
}
if (PHP_AMQP_READ_THIS_PROP_BOOL("durable")) {
flagBitmask |= AMQP_DURABLE;
}
if (PHP_AMQP_READ_THIS_PROP_BOOL("auto_delete")) {
flagBitmask |= AMQP_AUTODELETE;
}
if (PHP_AMQP_READ_THIS_PROP_BOOL("internal")) {
flagBitmask |= AMQP_INTERNAL;
}
RETURN_LONG(flagBitmask);
}
/* }}} */
/* {{{ proto AMQPExchange::setFlags(long bitmask)
Set the exchange parameters */
PHP_METHOD(amqp_exchange_class, setFlags)
{
PHP5to7_param_long_type_t flagBitmask;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &flagBitmask) == FAILURE) {
return;
}
/* Set the flags based on the bitmask we were given */
flagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_EXCHANGE_FLAGS : flagBitmask;
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("passive"), IS_PASSIVE(flagBitmask) TSRMLS_CC);
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("durable"), IS_DURABLE(flagBitmask) TSRMLS_CC);
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("auto_delete"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("internal"), IS_INTERNAL(flagBitmask) TSRMLS_CC);
}
/* }}} */
/* {{{ proto AMQPExchange::getType()
Get the exchange type */
PHP_METHOD(amqp_exchange_class, getType)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
if (PHP_AMQP_READ_THIS_PROP_STRLEN("type") > 0) {
PHP_AMQP_RETURN_THIS_PROP("type");
} else {
/* BC */
RETURN_FALSE;
}
}
/* }}} */
/* {{{ proto AMQPExchange::setType(string type)
Set the exchange type */
PHP_METHOD(amqp_exchange_class, setType)
{
char *type = NULL; PHP5to7_param_str_len_type_t type_len = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &type, &type_len) == FAILURE) {
return;
}
zend_update_property_stringl(this_ce, getThis(), ZEND_STRL("type"), type, type_len TSRMLS_CC);
}
/* }}} */
/* {{{ proto AMQPExchange::getArgument(string key)
Get the exchange argument referenced by key */
PHP_METHOD(amqp_exchange_class, getArgument)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP5to7_zval_t *tmp = NULL;
char *key; PHP5to7_param_str_len_type_t key_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &key, &key_len) == FAILURE) {
return;
}
if (!PHP5to7_ZEND_HASH_FIND(PHP_AMQP_READ_THIS_PROP_ARR("arguments"), key, key_len + 1, tmp)) {
RETURN_FALSE;
}
RETURN_ZVAL(PHP5to7_MAYBE_DEREF(tmp), 1, 0);
}
/* }}} */
/* {{{ proto AMQPExchange::hasArgument(string key) */
PHP_METHOD(amqp_exchange_class, hasArgument)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP5to7_zval_t *tmp = NULL;
char *key; PHP5to7_param_str_len_type_t key_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &key, &key_len) == FAILURE) {
return;
}
if (!PHP5to7_ZEND_HASH_FIND(PHP_AMQP_READ_THIS_PROP_ARR("arguments"), key, (uint)(key_len + 1), tmp)) {
RETURN_FALSE;
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::getArguments
Get the exchange arguments */
PHP_METHOD(amqp_exchange_class, getArguments)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("arguments");
}
/* }}} */
/* {{{ proto AMQPExchange::setArguments(array args)
Overwrite all exchange arguments with given args */
PHP_METHOD(amqp_exchange_class, setArguments)
{
zval *zvalArguments;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &zvalArguments) == FAILURE) {
return;
}
zend_update_property(this_ce, getThis(), ZEND_STRL("arguments"), zvalArguments TSRMLS_CC);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::setArgument(key, value) */
PHP_METHOD(amqp_exchange_class, setArgument)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
char *key= NULL; PHP5to7_param_str_len_type_t key_len = 0;
zval *value = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz",
&key, &key_len,
&value) == FAILURE) {
return;
}
switch (Z_TYPE_P(value)) {
case IS_NULL:
PHP5to7_ZEND_HASH_DEL(PHP_AMQP_READ_THIS_PROP_ARR("arguments"), key, (uint) (key_len + 1));
break;
PHP5to7_CASE_IS_BOOL:
case IS_LONG:
case IS_DOUBLE:
case IS_STRING:
PHP5to7_ZEND_HASH_ADD(PHP_AMQP_READ_THIS_PROP_ARR("arguments"), key, (uint) (key_len + 1), value, sizeof(zval *));
Z_TRY_ADDREF_P(value);
break;
default:
zend_throw_exception(amqp_exchange_exception_class_entry, "The value parameter must be of type NULL, int, double or string.", 0 TSRMLS_CC);
return;
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::declareExchange();
declare Exchange
*/
PHP_METHOD(amqp_exchange_class, declareExchange)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
amqp_channel_resource *channel_resource;
amqp_table_t *arguments;
if (zend_parse_parameters_none() == FAILURE) {
return;
}
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(PHP_AMQP_READ_THIS_PROP("channel"));
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not declare exchange.");
/* Check that the exchange has a name */
if (PHP_AMQP_READ_THIS_PROP_STRLEN("name") < 1) {
zend_throw_exception(amqp_exchange_exception_class_entry, "Could not declare exchange. Exchanges must have a name.", 0 TSRMLS_CC);
return;
}
/* Check that the exchange has a name */
if (PHP_AMQP_READ_THIS_PROP_STRLEN("type") < 1) {
zend_throw_exception(amqp_exchange_exception_class_entry, "Could not declare exchange. Exchanges must have a type.", 0 TSRMLS_CC);
return;
}
arguments = convert_zval_to_amqp_table(PHP_AMQP_READ_THIS_PROP("arguments") TSRMLS_CC);
#if AMQP_VERSION_MAJOR * 100 + AMQP_VERSION_MINOR * 10 + AMQP_VERSION_PATCH > 52
amqp_exchange_declare(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("name")),
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("type")),
PHP_AMQP_READ_THIS_PROP_BOOL("passive"),
PHP_AMQP_READ_THIS_PROP_BOOL("durable"),
PHP_AMQP_READ_THIS_PROP_BOOL("auto_delete"),
PHP_AMQP_READ_THIS_PROP_BOOL("internal"),
*arguments
);
#else
amqp_exchange_declare(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("name")),
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("type")),
PHP_AMQP_READ_THIS_PROP_BOOL("passive"),
PHP_AMQP_READ_THIS_PROP_BOOL("durable"),
*arguments
);
#endif
amqp_rpc_reply_t res = amqp_get_rpc_reply(channel_resource->connection_resource->connection_state);
php_amqp_free_amqp_table(arguments);
/* handle any errors that occured outside of signals */
if (res.reply_type != AMQP_RESPONSE_NORMAL) {
PHP_AMQP_INIT_ERROR_MESSAGE();
php_amqp_error(res, PHP_AMQP_ERROR_MESSAGE_PTR, channel_resource->connection_resource, channel_resource TSRMLS_CC);
php_amqp_zend_throw_exception(res, amqp_exchange_exception_class_entry, PHP_AMQP_ERROR_MESSAGE, 0 TSRMLS_CC);
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
PHP_AMQP_DESTROY_ERROR_MESSAGE();
return;
}
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::delete([string name[, long params]]);
delete Exchange
*/
PHP_METHOD(amqp_exchange_class, delete)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
amqp_channel_resource *channel_resource;
char *name = NULL; PHP5to7_param_str_len_type_t name_len = 0;
PHP5to7_param_long_type_t flags = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sl",
&name, &name_len,
&flags) == FAILURE) {
return;
}
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(PHP_AMQP_READ_THIS_PROP("channel"));
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not delete exchange.");
amqp_exchange_delete(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
amqp_cstring_bytes(name_len ? name : PHP_AMQP_READ_THIS_PROP_STR("name")),
(AMQP_IFUNUSED & flags) ? 1 : 0
);
amqp_rpc_reply_t res = amqp_get_rpc_reply(channel_resource->connection_resource->connection_state);
if (res.reply_type != AMQP_RESPONSE_NORMAL) {
PHP_AMQP_INIT_ERROR_MESSAGE();
php_amqp_error(res, PHP_AMQP_ERROR_MESSAGE_PTR, channel_resource->connection_resource, channel_resource TSRMLS_CC);
php_amqp_zend_throw_exception(res, amqp_exchange_exception_class_entry, PHP_AMQP_ERROR_MESSAGE, 0 TSRMLS_CC);
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
PHP_AMQP_DESTROY_ERROR_MESSAGE();
return;
}
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::publish(string msg, [string key, [int flags, [array headers]]]);
publish into Exchange
*/
PHP_METHOD(amqp_exchange_class, publish)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
zval *ini_arr = NULL;
PHP5to7_zval_t *tmp = NULL;
amqp_channel_resource *channel_resource;
char *key_name = NULL; PHP5to7_param_str_len_type_t key_len = 0;
char *msg = NULL; PHP5to7_param_str_len_type_t msg_len = 0;
PHP5to7_param_long_type_t flags = AMQP_NOPARAM;
#ifndef PHP_WIN32
/* Storage for previous signal handler during SIGPIPE override */
void * old_handler;
#endif
amqp_basic_properties_t props;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sla/",
&msg, &msg_len,
&key_name, &key_len,
&flags,
&ini_arr) == FAILURE) {
return;
}
/* By default (and for BC) content type is text/plain (may be skipped at all, then set props._flags to 0) */
props.content_type = amqp_cstring_bytes("text/plain");
props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG;
props.headers.entries = 0;
{
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "content_type", sizeof("content_type"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.content_type = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_CONTENT_TYPE_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "content_encoding", sizeof("content_encoding"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.content_encoding = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_CONTENT_ENCODING_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "message_id", sizeof("message_id"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.message_id = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_MESSAGE_ID_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "user_id", sizeof("user_id"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.user_id = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_USER_ID_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "app_id", sizeof("app_id"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.app_id = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_APP_ID_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "delivery_mode", sizeof("delivery_mode"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_long(PHP5to7_MAYBE_DEREF(tmp));
props.delivery_mode = (uint8_t)Z_LVAL_P(PHP5to7_MAYBE_DEREF(tmp));
props._flags |= AMQP_BASIC_DELIVERY_MODE_FLAG;
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "priority", sizeof("priority"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_long(PHP5to7_MAYBE_DEREF(tmp));
props.priority = (uint8_t)Z_LVAL_P(PHP5to7_MAYBE_DEREF(tmp));
props._flags |= AMQP_BASIC_PRIORITY_FLAG;
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "timestamp", sizeof("timestamp"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_long(PHP5to7_MAYBE_DEREF(tmp));
props.timestamp = (uint64_t)Z_LVAL_P(PHP5to7_MAYBE_DEREF(tmp));
props._flags |= AMQP_BASIC_TIMESTAMP_FLAG;
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "expiration", sizeof("expiration"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.expiration = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_EXPIRATION_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "type", sizeof("type"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.type = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_TYPE_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "reply_to", sizeof("reply_to"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.reply_to = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_REPLY_TO_FLAG;
}
}
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF (ini_arr), "correlation_id", sizeof("correlation_id"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_string(PHP5to7_MAYBE_DEREF(tmp));
if (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(tmp)) > 0) {
props.correlation_id = amqp_cstring_bytes(Z_STRVAL_P(PHP5to7_MAYBE_DEREF(tmp)));
props._flags |= AMQP_BASIC_CORRELATION_ID_FLAG;
}
}
}
amqp_table_t *headers = NULL;
if (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), "headers", sizeof("headers"), tmp)) {
SEPARATE_ZVAL(tmp);
convert_to_array(PHP5to7_MAYBE_DEREF(tmp));
headers = convert_zval_to_amqp_table(PHP5to7_MAYBE_DEREF(tmp) TSRMLS_CC);
props._flags |= AMQP_BASIC_HEADERS_FLAG;
props.headers = *headers;
}
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(PHP_AMQP_READ_THIS_PROP("channel"));
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not publish to exchange.");
#ifndef PHP_WIN32
/* Start ignoring SIGPIPE */
old_handler = signal(SIGPIPE, SIG_IGN);
#endif
zval *exchange_name = PHP_AMQP_READ_THIS_PROP("name");
/* NOTE: basic.publish is asynchronous and thus will not indicate failure if something goes wrong on the broker */
int status = amqp_basic_publish(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
(Z_TYPE_P(exchange_name) == IS_STRING && Z_STRLEN_P(exchange_name) > 0 ? amqp_cstring_bytes(Z_STRVAL_P(exchange_name)) : amqp_empty_bytes), /* exchange */
(key_len > 0 ? amqp_cstring_bytes(key_name) : amqp_empty_bytes), /* routing key */
(AMQP_MANDATORY & flags) ? 1 : 0, /* mandatory */
(AMQP_IMMEDIATE & flags) ? 1 : 0, /* immediate */
&props,
php_amqp_long_string(msg, msg_len) /* message body */
);
if (headers) {
php_amqp_free_amqp_table(headers);
}
#ifndef PHP_WIN32
/* End ignoring of SIGPIPEs */
signal(SIGPIPE, old_handler);
#endif
if (status != AMQP_STATUS_OK) {
/* Emulate library error */
amqp_rpc_reply_t res;
res.reply_type = AMQP_RESPONSE_LIBRARY_EXCEPTION;
res.library_error = status;
PHP_AMQP_INIT_ERROR_MESSAGE();
php_amqp_error(res, PHP_AMQP_ERROR_MESSAGE_PTR, channel_resource->connection_resource, channel_resource TSRMLS_CC);
php_amqp_zend_throw_exception(res, amqp_queue_exception_class_entry, PHP_AMQP_ERROR_MESSAGE, 0 TSRMLS_CC);
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
PHP_AMQP_DESTROY_ERROR_MESSAGE();
return;
}
RETURN_TRUE;
}
/* }}} */
/* {{{ proto int exchange::bind(string srcExchangeName[, string routingKey, array arguments]);
bind exchange to exchange by routing key
*/
PHP_METHOD(amqp_exchange_class, bind)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
zval *zvalArguments = NULL;
amqp_channel_resource *channel_resource;
char *src_name; PHP5to7_param_str_len_type_t src_name_len = 0;
char *keyname; PHP5to7_param_str_len_type_t keyname_len = 0;
amqp_table_t *arguments = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sa",
&src_name, &src_name_len,
&keyname, &keyname_len,
&zvalArguments) == FAILURE) {
return;
}
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(PHP_AMQP_READ_THIS_PROP("channel"));
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not bind to exchange.");
if (zvalArguments) {
arguments = convert_zval_to_amqp_table(zvalArguments TSRMLS_CC);
}
amqp_exchange_bind(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("name")),
(src_name_len > 0 ? amqp_cstring_bytes(src_name) : amqp_empty_bytes),
(keyname_len > 0 ? amqp_cstring_bytes(keyname) : amqp_empty_bytes),
(arguments ? *arguments : amqp_empty_table)
);
if (arguments) {
php_amqp_free_amqp_table(arguments);
}
amqp_rpc_reply_t res = amqp_get_rpc_reply(channel_resource->connection_resource->connection_state);
if (res.reply_type != AMQP_RESPONSE_NORMAL) {
PHP_AMQP_INIT_ERROR_MESSAGE();
php_amqp_error(res, PHP_AMQP_ERROR_MESSAGE_PTR, channel_resource->connection_resource, channel_resource TSRMLS_CC);
php_amqp_zend_throw_exception(res, amqp_exchange_exception_class_entry, PHP_AMQP_ERROR_MESSAGE, 0 TSRMLS_CC);
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
PHP_AMQP_DESTROY_ERROR_MESSAGE();
return;
}
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto int exchange::unbind(string srcExchangeName[, string routingKey, array arguments]);
remove exchange to exchange binding by routing key
*/
PHP_METHOD(amqp_exchange_class, unbind)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
zval *zvalArguments = NULL;
amqp_channel_resource *channel_resource;
char *src_name; PHP5to7_param_str_len_type_t src_name_len = 0;
char *keyname; PHP5to7_param_str_len_type_t keyname_len = 0;
amqp_table_t *arguments = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sa",
&src_name, &src_name_len,
&keyname, &keyname_len,
&zvalArguments) == FAILURE) {
return;
}
channel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(PHP_AMQP_READ_THIS_PROP("channel"));
PHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, "Could not unbind from exchange.");
if (zvalArguments) {
arguments = convert_zval_to_amqp_table(zvalArguments TSRMLS_CC);
}
amqp_exchange_unbind(
channel_resource->connection_resource->connection_state,
channel_resource->channel_id,
amqp_cstring_bytes(PHP_AMQP_READ_THIS_PROP_STR("name")),
(src_name_len > 0 ? amqp_cstring_bytes(src_name) : amqp_empty_bytes),
(keyname_len > 0 ? amqp_cstring_bytes(keyname) : amqp_empty_bytes),
(arguments ? *arguments : amqp_empty_table)
);
if (arguments) {
php_amqp_free_amqp_table(arguments);
}
amqp_rpc_reply_t res = amqp_get_rpc_reply(channel_resource->connection_resource->connection_state);
if (res.reply_type != AMQP_RESPONSE_NORMAL) {
PHP_AMQP_INIT_ERROR_MESSAGE();
php_amqp_error(res, PHP_AMQP_ERROR_MESSAGE_PTR, channel_resource->connection_resource, channel_resource TSRMLS_CC);
php_amqp_zend_throw_exception(res, amqp_exchange_exception_class_entry, PHP_AMQP_ERROR_MESSAGE, 0 TSRMLS_CC);
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
PHP_AMQP_DESTROY_ERROR_MESSAGE();
return;
}
php_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto AMQPExchange::getChannel()
Get the AMQPChannel object in use */
PHP_METHOD(amqp_exchange_class, getChannel)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("channel");
}
/* }}} */
/* {{{ proto AMQPExchange::getConnection()
Get the AMQPConnection object in use */
PHP_METHOD(amqp_exchange_class, getConnection)
{
PHP5to7_READ_PROP_RV_PARAM_DECL;
PHP_AMQP_NOPARAMS();
PHP_AMQP_RETURN_THIS_PROP("connection");
}
/* }}} */
/* amqp_exchange ARG_INFO definition */
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class__construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_OBJ_INFO(0, amqp_channel, AMQPChannel, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getName, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_setName, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, exchange_name)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getFlags, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_setFlags, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getType, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_setType, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, exchange_type)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getArgument, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, argument)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_hasArgument, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, argument)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getArguments, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_setArgument, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 2)
ZEND_ARG_INFO(0, key)
ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_setArguments, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_ARRAY_INFO(0, arguments, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_declareExchange, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_bind, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 2)
ZEND_ARG_INFO(0, exchange_name)
ZEND_ARG_INFO(0, routing_key)
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_unbind, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 2)
ZEND_ARG_INFO(0, exchange_name)
ZEND_ARG_INFO(0, routing_key)
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_delete, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_ARG_INFO(0, exchange_name)
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_publish, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, message)
ZEND_ARG_INFO(0, routing_key)
ZEND_ARG_INFO(0, flags)
ZEND_ARG_ARRAY_INFO(0, headers, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getChannel, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_exchange_class_getConnection, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
ZEND_END_ARG_INFO()
zend_function_entry amqp_exchange_class_functions[] = {
PHP_ME(amqp_exchange_class, __construct, arginfo_amqp_exchange_class__construct, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getName, arginfo_amqp_exchange_class_getName, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, setName, arginfo_amqp_exchange_class_setName, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getFlags, arginfo_amqp_exchange_class_getFlags, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, setFlags, arginfo_amqp_exchange_class_setFlags, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getType, arginfo_amqp_exchange_class_getType, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, setType, arginfo_amqp_exchange_class_setType, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getArgument, arginfo_amqp_exchange_class_getArgument, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getArguments, arginfo_amqp_exchange_class_getArguments, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, setArgument, arginfo_amqp_exchange_class_setArgument, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, setArguments, arginfo_amqp_exchange_class_setArguments, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, hasArgument, arginfo_amqp_exchange_class_hasArgument, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, declareExchange,arginfo_amqp_exchange_class_declareExchange,ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, bind, arginfo_amqp_exchange_class_bind, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, unbind, arginfo_amqp_exchange_class_unbind, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, delete, arginfo_amqp_exchange_class_delete, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, publish, arginfo_amqp_exchange_class_publish, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getChannel, arginfo_amqp_exchange_class_getChannel, ZEND_ACC_PUBLIC)
PHP_ME(amqp_exchange_class, getConnection, arginfo_amqp_exchange_class_getConnection, ZEND_ACC_PUBLIC)
PHP_MALIAS(amqp_exchange_class, declare, declareExchange, arginfo_amqp_exchange_class_declareExchange, ZEND_ACC_PUBLIC | ZEND_ACC_DEPRECATED)
{NULL, NULL, NULL} /* Must be the last line in amqp_functions[] */
};
PHP_MINIT_FUNCTION(amqp_exchange)
{
zend_class_entry ce;
INIT_CLASS_ENTRY(ce, "AMQPExchange", amqp_exchange_class_functions);
this_ce = zend_register_internal_class(&ce TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("connection"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("channel"), ZEND_ACC_PRIVATE TSRMLS_CC);
- zend_declare_property_null(this_ce, ZEND_STRL("name"), ZEND_ACC_PRIVATE TSRMLS_CC);
+ zend_declare_property_stringl(this_ce, ZEND_STRL("name"), "", 0, ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("type"), ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_bool(this_ce, ZEND_STRL("passive"), 0, ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_bool(this_ce, ZEND_STRL("durable"), 0, ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_bool(this_ce, ZEND_STRL("auto_delete"), 0, ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_bool(this_ce, ZEND_STRL("internal"), 0, ZEND_ACC_PRIVATE TSRMLS_CC);
zend_declare_property_null(this_ce, ZEND_STRL("arguments"), ZEND_ACC_PRIVATE TSRMLS_CC);
return SUCCESS;
}
/*
*Local variables:
*tab-width: 4
*c-basic-offset: 4
*End:
*vim600: noet sw=4 ts=4 fdm=marker
*vim<600: noet sw=4 ts=4
*/
diff --git a/amqp-1.7.0/amqp_exchange.h b/amqp-1.7.1/amqp_exchange.h
similarity index 100%
rename from amqp-1.7.0/amqp_exchange.h
rename to amqp-1.7.1/amqp_exchange.h
diff --git a/amqp-1.7.0/amqp_queue.c b/amqp-1.7.1/amqp_queue.c
similarity index 100%
rename from amqp-1.7.0/amqp_queue.c
rename to amqp-1.7.1/amqp_queue.c
diff --git a/amqp-1.7.0/amqp_queue.h b/amqp-1.7.1/amqp_queue.h
similarity index 100%
rename from amqp-1.7.0/amqp_queue.h
rename to amqp-1.7.1/amqp_queue.h
diff --git a/amqp-1.7.0/benchmark.php b/amqp-1.7.1/benchmark.php
similarity index 100%
rename from amqp-1.7.0/benchmark.php
rename to amqp-1.7.1/benchmark.php
diff --git a/amqp-1.7.1/config.m4 b/amqp-1.7.1/config.m4
new file mode 100644
index 0000000..30f75c2
--- /dev/null
+++ b/amqp-1.7.1/config.m4
@@ -0,0 +1,157 @@
+dnl $Id: config.m4 322428 2012-01-17 21:42:40Z pdezwart $
+dnl config.m4 for extension amqp
+
+dnl Comments in this file start with the string 'dnl'.
+dnl Remove where necessary. This file will not work
+dnl without editing.
+dnl amqp
+dnl If your extension references something external, use with:
+
+
+dnl Make sure that the comment is aligned:
+PHP_ARG_WITH(amqp, for amqp support,
+[ --with-amqp Include amqp support])
+
+PHP_ARG_WITH(librabbitmq-dir, for amqp,
+[ --with-librabbitmq-dir[=DIR] Set the path to librabbitmq install prefix.], yes)
+
+
+if test "$PHP_AMQP" != "no"; then
+ dnl Write more examples of tests here...
+
+ AC_MSG_RESULT($PHP_AMQP)
+
+ dnl # --with-amqp -> check with-path
+
+ SEARCH_FOR="amqp_framing.h"
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ if test "$PHP_LIBRABBITMQ_DIR" = "yes" -a -x $PKG_CONFIG; then
+ AC_MSG_CHECKING([for amqp using pkg-config])
+
+ if ! $PKG_CONFIG --exists librabbitmq ; then
+ AC_MSG_ERROR([librabbitmq not found])
+ fi
+
+ PHP_AMQP_VERSION=`$PKG_CONFIG librabbitmq --modversion`
+ AC_MSG_RESULT([found version $PHP_AMQP_VERSION])
+
+ if ! $PKG_CONFIG librabbitmq --atleast-version 0.5.2 ; then
+ AC_MSG_ERROR([librabbitmq must be version 0.5.2 or greater])
+ fi
+ if ! $PKG_CONFIG librabbitmq --atleast-version 0.6.0 ; then
+ AC_MSG_WARN([librabbitmq 0.6.0 or greater recommended])
+ fi
+
+ PHP_AMQP_LIBS=`$PKG_CONFIG librabbitmq --libs`
+ PHP_AMQP_INCS=`$PKG_CONFIG librabbitmq --cflags`
+
+ PHP_EVAL_LIBLINE($PHP_AMQP_LIBS, AMQP_SHARED_LIBADD)
+ PHP_EVAL_INCLINE($PHP_AMQP_INCS)
+
+ else
+ AC_MSG_CHECKING([for amqp files in default path])
+ if test "$PHP_LIBRABBITMQ_DIR" != "no" && test "$PHP_LIBRABBITMQ_DIR" != "yes"; then
+ for i in $PHP_LIBRABBITMQ_DIR; do
+ if test -r $i/include/$SEARCH_FOR;
+ then
+ AMQP_DIR=$i
+ AC_MSG_RESULT(found in $i)
+ break
+ fi
+ done
+ else
+ for i in $PHP_AMQP /usr/local /usr ; do
+ if test -r $i/include/$SEARCH_FOR;
+ then
+ AMQP_DIR=$i
+ AC_MSG_RESULT(found in $i)
+ break
+ fi
+ done
+ fi
+
+ if test -z "$AMQP_DIR"; then
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([Please reinstall the librabbitmq distribution itself or (re)install librabbitmq development package if it available in your system])
+ fi
+
+ dnl # --with-amqp -> add include path
+ PHP_ADD_INCLUDE($AMQP_DIR/include)
+
+ old_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -I$AMQP_DIR/include"
+
+ AC_CACHE_CHECK(for librabbitmq version, ac_cv_librabbitmq_version, [
+ AC_TRY_RUN([
+ #include "amqp.h"
+ #include <stdio.h>
+
+ int main ()
+ {
+ FILE *testfile = fopen("conftestval", "w");
+
+ if (NULL == testfile) {
+ return 1;
+ }
+
+ fprintf(testfile, "%s\n", AMQ_VERSION_STRING);
+ fclose(testfile);
+
+ return 0;
+ }
+ ], [ac_cv_librabbitmq_version=`cat ./conftestval`], [ac_cv_librabbitmq_version=NONE], [ac_cv_librabbitmq_version=NONE])
+ ])
+
+ CFLAGS=$old_CFLAGS
+
+ if test "$ac_cv_librabbitmq_version" != "NONE"; then
+ ac_IFS=$IFS
+ IFS=.
+ set $ac_cv_librabbitmq_version
+ IFS=$ac_IFS
+ LIBRABBITMQ_API_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
+
+ if test "$LIBRABBITMQ_API_VERSION" -lt 5001 ; then
+ AC_MSG_ERROR([librabbitmq must be version 0.5.2 or greater, $ac_cv_librabbitmq_version version given instead])
+ fi
+
+ if test "$LIBRABBITMQ_API_VERSION" -lt 6000 ; then
+ AC_MSG_WARN([librabbitmq 0.6.0 or greater recommended, current version is $ac_cv_librabbitmq_version])
+ fi
+ else
+ AC_MSG_ERROR([could not determine librabbitmq version])
+ fi
+
+ dnl # --with-amqp -> check for lib and symbol presence
+ LIBNAME=rabbitmq
+ LIBSYMBOL=rabbitmq
+
+ PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $AMQP_DIR/$PHP_LIBDIR, AMQP_SHARED_LIBADD)
+ fi
+ PHP_SUBST(AMQP_SHARED_LIBADD)
+
+ if test -z "$TRAVIS" ; then
+ type git &>/dev/null
+
+ if test $? -eq 0 ; then
+ git describe --abbrev=0 --tags &>/dev/null
+
+ if test $? -eq 0 ; then
+ AC_DEFINE_UNQUOTED([PHP_AMQP_VERSION], ["`git describe --abbrev=0 --tags`-`git rev-parse --abbrev-ref HEAD`-dev"], [git version])
+ fi
+
+ git rev-parse --short HEAD &>/dev/null
+
+ if test $? -eq 0 ; then
+ AC_DEFINE_UNQUOTED([PHP_AMQP_REVISION], ["`git rev-parse --short HEAD`"], [git revision])
+ fi
+ else
+ AC_MSG_NOTICE([git not installed. Cannot obtain php_amqp version tag. Install git.])
+ fi
+ fi
+
+ AMQP_SOURCES="amqp.c amqp_exchange.c amqp_queue.c amqp_connection.c amqp_connection_resource.c amqp_channel.c amqp_envelope.c"
+
+ PHP_NEW_EXTENSION(amqp, $AMQP_SOURCES, $ext_shared)
+fi
diff --git a/amqp-1.7.0/config.w32 b/amqp-1.7.1/config.w32
similarity index 100%
rename from amqp-1.7.0/config.w32
rename to amqp-1.7.1/config.w32
diff --git a/amqp-1.7.0/php5_support.h b/amqp-1.7.1/php5_support.h
similarity index 100%
rename from amqp-1.7.0/php5_support.h
rename to amqp-1.7.1/php5_support.h
diff --git a/amqp-1.7.0/php7_support.h b/amqp-1.7.1/php7_support.h
similarity index 100%
rename from amqp-1.7.0/php7_support.h
rename to amqp-1.7.1/php7_support.h
diff --git a/amqp-1.7.0/php_amqp.h b/amqp-1.7.1/php_amqp.h
similarity index 99%
rename from amqp-1.7.0/php_amqp.h
rename to amqp-1.7.1/php_amqp.h
index 76bf15e..a3ebec1 100644
--- a/amqp-1.7.0/php_amqp.h
+++ b/amqp-1.7.1/php_amqp.h
@@ -1,345 +1,345 @@
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2007 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Alexandre Kalendarev akalend@mail.ru Copyright (c) 2009-2010 |
| Lead: |
| - Pieter de Zwart |
| Maintainers: |
| - Brad Rodriguez |
| - Jonathan Tansavatdi |
+----------------------------------------------------------------------+
*/
/* $Id: php_amqp.h 327551 2012-09-09 03:49:34Z pdezwart $ */
#ifndef PHP_AMQP_H
#define PHP_AMQP_H
#include "amqp.h"
#if PHP_MAJOR_VERSION >= 7
#include "php7_support.h"
#else
#include "php5_support.h"
#endif
extern zend_module_entry amqp_module_entry;
#define phpext_amqp_ptr &amqp_module_entry
#ifdef PHP_WIN32
#define PHP_AMQP_API __declspec(dllexport)
#else
#define PHP_AMQP_API
#endif
#ifdef ZTS
#include "TSRM.h"
#endif
#define AMQP_NOPARAM 0
/* Where is 1?*/
#define AMQP_JUST_CONSUME 1
#define AMQP_DURABLE 2
#define AMQP_PASSIVE 4
#define AMQP_EXCLUSIVE 8
#define AMQP_AUTODELETE 16
#define AMQP_INTERNAL 32
#define AMQP_NOLOCAL 64
#define AMQP_AUTOACK 128
#define AMQP_IFEMPTY 256
#define AMQP_IFUNUSED 512
#define AMQP_MANDATORY 1024
#define AMQP_IMMEDIATE 2048
#define AMQP_MULTIPLE 4096
#define AMQP_NOWAIT 8192
#define AMQP_REQUEUE 16384
/* passive, durable, auto-delete, internal, no-wait (see https://www.rabbitmq.com/amqp-0-9-1-reference.html#exchange.declare) */
#define PHP_AMQP_EXCHANGE_FLAGS (AMQP_PASSIVE | AMQP_DURABLE | AMQP_AUTODELETE | AMQP_INTERNAL)
/* passive, durable, exclusive, auto-delete, no-wait (see https://www.rabbitmq.com/amqp-0-9-1-reference.html#queue.declare) */
/* We don't support no-wait flag */
#define PHP_AMQP_QUEUE_FLAGS (AMQP_PASSIVE | AMQP_DURABLE | AMQP_EXCLUSIVE | AMQP_AUTODELETE)
#define AMQP_EX_TYPE_DIRECT "direct"
#define AMQP_EX_TYPE_FANOUT "fanout"
#define AMQP_EX_TYPE_TOPIC "topic"
#define AMQP_EX_TYPE_HEADERS "headers"
#define PHP_AMQP_CONNECTION_RES_NAME "AMQP Connection Resource"
PHP_MINIT_FUNCTION(amqp);
PHP_MSHUTDOWN_FUNCTION(amqp);
PHP_MINFO_FUNCTION(amqp);
amqp_table_t *convert_zval_to_amqp_table(zval *zvalArguments TSRMLS_DC);
void php_amqp_free_amqp_table(amqp_table_t * table);
char *stringify_bytes(amqp_bytes_t bytes);
/* True global resources - no need for thread safety here */
extern zend_class_entry *amqp_exception_class_entry,
*amqp_connection_exception_class_entry,
*amqp_channel_exception_class_entry,
*amqp_exchange_exception_class_entry,
*amqp_queue_exception_class_entry;
typedef struct _amqp_connection_resource amqp_connection_resource;
typedef struct _amqp_connection_object amqp_connection_object;
typedef struct _amqp_channel_resource {
char is_connected;
amqp_channel_t channel_id;
amqp_connection_resource *connection_resource;
} amqp_channel_resource;
/* NOTE: due to how interanlly PHP works with custom object, zend_object position in structure matters */
typedef struct _amqp_channel_object {
#if PHP_MAJOR_VERSION >= 7
amqp_channel_resource *channel_resource;
zend_object zo;
#else
zend_object zo;
amqp_channel_resource *channel_resource;
#endif
} amqp_channel_object;
struct _amqp_connection_resource {
zend_bool is_connected;
zend_bool is_persistent;
zend_bool is_dirty;
PHP5to7_zend_resource_t resource;
amqp_connection_object *parent;
amqp_channel_t max_slots;
amqp_channel_t used_slots;
amqp_channel_resource **slots;
amqp_connection_state_t connection_state;
amqp_socket_t *socket;
};
struct _amqp_connection_object {
#if PHP_MAJOR_VERSION >= 7
amqp_connection_resource *connection_resource;
zend_object zo;
#else
zend_object zo;
amqp_connection_resource *connection_resource;
#endif
};
#define DEFAULT_PORT "5672" /* default AMQP port */
#define DEFAULT_HOST "localhost"
#define DEFAULT_TIMEOUT ""
#define DEFAULT_READ_TIMEOUT "0"
#define DEFAULT_WRITE_TIMEOUT "0"
#define DEFAULT_CONNECT_TIMEOUT "0"
#define DEFAULT_VHOST "/"
#define DEFAULT_LOGIN "guest"
#define DEFAULT_PASSWORD "guest"
#define DEFAULT_AUTOACK "0" /* These are all strings to facilitate setting default ini values */
#define DEFAULT_PREFETCH_COUNT "3"
/* Usually, default is 0 which means 65535, but underlying rabbitmq-c library pool allocates minimal pool for each channel,
* so it takes a lot of memory to keep all that channels. Even after channel closing that buffer still keep memory allocation.
*/
/* #define DEFAULT_CHANNELS_PER_CONNECTION AMQP_DEFAULT_MAX_CHANNELS */
#define PHP_AMQP_PROTOCOL_MAX_CHANNELS 256
/* AMQP_DEFAULT_FRAME_SIZE 131072 */
#if PHP_AMQP_PROTOCOL_MAX_CHANNELS > 0
#define PHP_AMQP_MAX_CHANNELS PHP_AMQP_PROTOCOL_MAX_CHANNELS
#else
#define PHP_AMQP_MAX_CHANNELS 65535 // Note that the maximum number of channels the protocol supports is 65535 (2^16, with the 0-channel reserved)
#endif
#define PHP_AMQP_MAX_FRAME INT_MAX
#define PHP_AMQP_MAX_HEARTBEAT INT_MAX
#define PHP_AMQP_DEFAULT_CHANNEL_MAX PHP_AMQP_MAX_CHANNELS
#define PHP_AMQP_DEFAULT_FRAME_MAX AMQP_DEFAULT_FRAME_SIZE
#define PHP_AMQP_DEFAULT_HEARTBEAT AMQP_DEFAULT_HEARTBEAT
#define PHP_AMQP_STRINGIFY(value) PHP_AMQP_TO_STRING(value)
#define PHP_AMQP_TO_STRING(value) #value
#define DEFAULT_CHANNEL_MAX PHP_AMQP_STRINGIFY(PHP_AMQP_MAX_CHANNELS)
#define DEFAULT_FRAME_MAX PHP_AMQP_STRINGIFY(PHP_AMQP_DEFAULT_FRAME_MAX)
#define DEFAULT_HEARTBEAT PHP_AMQP_STRINGIFY(PHP_AMQP_DEFAULT_HEARTBEAT)
#define IS_PASSIVE(bitmask) (AMQP_PASSIVE & (bitmask)) ? 1 : 0
#define IS_DURABLE(bitmask) (AMQP_DURABLE & (bitmask)) ? 1 : 0
#define IS_EXCLUSIVE(bitmask) (AMQP_EXCLUSIVE & (bitmask)) ? 1 : 0
#define IS_AUTODELETE(bitmask) (AMQP_AUTODELETE & (bitmask)) ? 1 : 0
#define IS_INTERNAL(bitmask) (AMQP_INTERNAL & (bitmask)) ? 1 : 0
#define IS_NOWAIT(bitmask) (AMQP_NOWAIT & (bitmask)) ? 1 : 0 /* NOTE: always 0 in rabbitmq-c internals, so don't use it unless you are clearly understand aftermath*/
#define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }
#define PHP_AMQP_RETURN_THIS_PROP(prop_name) \
zval * _zv = zend_read_property(this_ce, getThis(), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \
RETURN_ZVAL(_zv, 1, 0); \
#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), (obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
#define PHP_AMQP_READ_OBJ_PROP_DOUBLE(cls, obj, name) Z_DVAL_P(PHP_AMQP_READ_OBJ_PROP((cls), (obj), (name)))
#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)
#define PHP_AMQP_READ_THIS_PROP_BOOL(name) Z_BVAL_P(PHP_AMQP_READ_THIS_PROP(name))
#define PHP_AMQP_READ_THIS_PROP_STR(name) Z_STRVAL_P(PHP_AMQP_READ_THIS_PROP(name))
#define PHP_AMQP_READ_THIS_PROP_STRLEN(name) (Z_TYPE_P(PHP_AMQP_READ_THIS_PROP(name)) == IS_STRING ? Z_STRLEN_P(PHP_AMQP_READ_THIS_PROP(name)) : 0)
#define PHP_AMQP_READ_THIS_PROP_ARR(name) Z_ARRVAL_P(PHP_AMQP_READ_THIS_PROP(name))
#define PHP_AMQP_READ_THIS_PROP_LONG(name) Z_LVAL_P(PHP_AMQP_READ_THIS_PROP(name))
#define PHP_AMQP_READ_THIS_PROP_DOUBLE(name) Z_DVAL_P(PHP_AMQP_READ_THIS_PROP(name))
#if PHP_MAJOR_VERSION >= 7
static inline amqp_connection_object *php_amqp_connection_object_fetch(zend_object *obj) {
return (amqp_connection_object *)((char *)obj - XtOffsetOf(amqp_connection_object, zo));
}
static inline amqp_channel_object *php_amqp_channel_object_fetch(zend_object *obj) {
return (amqp_channel_object *)((char *)obj - XtOffsetOf(amqp_channel_object, zo));
}
#define PHP_AMQP_GET_CONNECTION(obj) php_amqp_connection_object_fetch(Z_OBJ_P(obj))
#define PHP_AMQP_GET_CHANNEL(obj) php_amqp_channel_object_fetch(Z_OBJ_P(obj))
#define PHP_AMQP_FETCH_CONNECTION(obj) php_amqp_connection_object_fetch(obj)
#define PHP_AMQP_FETCH_CHANNEL(obj) php_amqp_channel_object_fetch(obj)
#else
#define PHP_AMQP_GET_CONNECTION(obj) (amqp_connection_object *)zend_object_store_get_object((obj) TSRMLS_CC)
#define PHP_AMQP_GET_CHANNEL(obj) (amqp_channel_object *)zend_object_store_get_object((obj) TSRMLS_CC)
#define PHP_AMQP_FETCH_CONNECTION(obj) (amqp_connection_object*)(obj)
#define PHP_AMQP_FETCH_CHANNEL(obj) (amqp_channel_object*)(obj)
#endif
#define PHP_AMQP_GET_CHANNEL_RESOURCE(obj) (IS_OBJECT == Z_TYPE_P(obj) ? (PHP_AMQP_GET_CHANNEL(obj))->channel_resource : NULL)
#define PHP_AMQP_VERIFY_CONNECTION_ERROR(error, reason) \
char verify_connection_error_tmp[255]; \
snprintf(verify_connection_error_tmp, 255, "%s %s", error, reason); \
zend_throw_exception(amqp_connection_exception_class_entry, verify_connection_error_tmp, 0 TSRMLS_CC); \
return; \
#define PHP_AMQP_VERIFY_CONNECTION(connection, error) \
if (!connection) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "Stale reference to the connection object.") \
} \
if (!(connection)->connection_resource || !(connection)->connection_resource->is_connected) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "No connection available.") \
} \
#define PHP_AMQP_VERIFY_CHANNEL_ERROR(error, reason) \
char verify_channel_error_tmp[255]; \
snprintf(verify_channel_error_tmp, 255, "%s %s", error, reason); \
zend_throw_exception(amqp_channel_exception_class_entry, verify_channel_error_tmp, 0 TSRMLS_CC); \
return; \
#define PHP_AMQP_VERIFY_CHANNEL_RESOURCE(resource, error) \
if (!resource) { \
PHP_AMQP_VERIFY_CHANNEL_ERROR(error, "Stale reference to the channel object.") \
} \
if (!(resource)->is_connected) { \
PHP_AMQP_VERIFY_CHANNEL_ERROR(error, "No channel available.") \
} \
if (!(resource)->connection_resource) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "Stale reference to the connection object.") \
} \
if (!(resource)->connection_resource->is_connected) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "No connection available.") \
} \
#define PHP_AMQP_VERIFY_CHANNEL_CONNECTION_RESOURCE(resource, error) \
if (!resource) { \
PHP_AMQP_VERIFY_CHANNEL_ERROR(error, "Stale reference to the channel object.") \
} \
if (!(resource)->connection_resource) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "Stale reference to the connection object.") \
} \
if (!(resource)->connection_resource->is_connected) { \
PHP_AMQP_VERIFY_CONNECTION_ERROR(error, "No connection available.") \
} \
#define PHP_AMQP_ERROR_MESSAGE_PTR &php_amqp_internal_error_message
#define PHP_AMQP_ERROR_MESSAGE php_amqp_internal_error_message
#define PHP_AMQP_INIT_ERROR_MESSAGE()\
char *PHP_AMQP_ERROR_MESSAGE = NULL;
#define PHP_AMQP_DESTROY_ERROR_MESSAGE()\
if (PHP_AMQP_ERROR_MESSAGE != NULL) { efree(PHP_AMQP_ERROR_MESSAGE); }
#if ZEND_MODULE_API_NO >= 20100000
#define AMQP_OBJECT_PROPERTIES_INIT(obj, ce) object_properties_init(&(obj), ce);
#else
#define AMQP_OBJECT_PROPERTIES_INIT(obj, ce) \
do { \
zval *tmp; \
zend_hash_copy((obj).properties, &(ce)->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); \
} while (0);
#endif
#define AMQP_ERROR_CATEGORY_MASK (1 << 29)
#ifdef PHP_WIN32
# define AMQP_OS_SOCKET_TIMEOUT_ERRNO AMQP_ERROR_CATEGORY_MASK | WSAETIMEDOUT
#else
# define AMQP_OS_SOCKET_TIMEOUT_ERRNO AMQP_ERROR_CATEGORY_MASK | EAGAIN
#endif
#ifdef ZTS
#define AMQP_G(v) TSRMG(amqp_globals_id, zend_amqp_globals *, v)
#else
#define AMQP_G(v) (amqp_globals.v)
#endif
#ifndef PHP_AMQP_VERSION
-#define PHP_AMQP_VERSION "1.7.0"
+#define PHP_AMQP_VERSION "1.7.1"
#endif
#ifndef PHP_AMQP_REVISION
#define PHP_AMQP_REVISION "release"
#endif
void php_amqp_error(amqp_rpc_reply_t reply, char **message, amqp_connection_resource *connection_resource, amqp_channel_resource *channel_resource TSRMLS_DC);
void php_amqp_zend_throw_exception(amqp_rpc_reply_t reply, zend_class_entry *exception_ce, const char *message, PHP5to7_param_long_type_t code TSRMLS_DC);
void php_amqp_maybe_release_buffers_on_channel(amqp_connection_resource *connection_resource, amqp_channel_resource *channel_resource);
amqp_bytes_t php_amqp_long_string(char const *cstr, PHP5to7_param_str_len_type_t len);
#endif /* PHP_AMQP_H */
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
diff --git a/amqp-1.7.0/stubs/AMQP.php b/amqp-1.7.1/stubs/AMQP.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQP.php
rename to amqp-1.7.1/stubs/AMQP.php
diff --git a/amqp-1.7.0/stubs/AMQPChannel.php b/amqp-1.7.1/stubs/AMQPChannel.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPChannel.php
rename to amqp-1.7.1/stubs/AMQPChannel.php
diff --git a/amqp-1.7.0/stubs/AMQPChannelException.php b/amqp-1.7.1/stubs/AMQPChannelException.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPChannelException.php
rename to amqp-1.7.1/stubs/AMQPChannelException.php
diff --git a/amqp-1.7.0/stubs/AMQPConnection.php b/amqp-1.7.1/stubs/AMQPConnection.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPConnection.php
rename to amqp-1.7.1/stubs/AMQPConnection.php
diff --git a/amqp-1.7.0/stubs/AMQPConnectionException.php b/amqp-1.7.1/stubs/AMQPConnectionException.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPConnectionException.php
rename to amqp-1.7.1/stubs/AMQPConnectionException.php
diff --git a/amqp-1.7.0/stubs/AMQPEnvelope.php b/amqp-1.7.1/stubs/AMQPEnvelope.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPEnvelope.php
rename to amqp-1.7.1/stubs/AMQPEnvelope.php
diff --git a/amqp-1.7.0/stubs/AMQPException.php b/amqp-1.7.1/stubs/AMQPException.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPException.php
rename to amqp-1.7.1/stubs/AMQPException.php
diff --git a/amqp-1.7.0/stubs/AMQPExchange.php b/amqp-1.7.1/stubs/AMQPExchange.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPExchange.php
rename to amqp-1.7.1/stubs/AMQPExchange.php
diff --git a/amqp-1.7.0/stubs/AMQPExchangeException.php b/amqp-1.7.1/stubs/AMQPExchangeException.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPExchangeException.php
rename to amqp-1.7.1/stubs/AMQPExchangeException.php
diff --git a/amqp-1.7.0/stubs/AMQPQueue.php b/amqp-1.7.1/stubs/AMQPQueue.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPQueue.php
rename to amqp-1.7.1/stubs/AMQPQueue.php
diff --git a/amqp-1.7.0/stubs/AMQPQueueException.php b/amqp-1.7.1/stubs/AMQPQueueException.php
similarity index 100%
rename from amqp-1.7.0/stubs/AMQPQueueException.php
rename to amqp-1.7.1/stubs/AMQPQueueException.php
diff --git a/amqp-1.7.0/tests/_test_helpers.php.inc b/amqp-1.7.1/tests/_test_helpers.php.inc
similarity index 100%
rename from amqp-1.7.0/tests/_test_helpers.php.inc
rename to amqp-1.7.1/tests/_test_helpers.php.inc
diff --git a/amqp-1.7.0/tests/amqpchannel_basicRecover.phpt b/amqp-1.7.1/tests/amqpchannel_basicRecover.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_basicRecover.phpt
rename to amqp-1.7.1/tests/amqpchannel_basicRecover.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_construct_basic.phpt b/amqp-1.7.1/tests/amqpchannel_construct_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_construct_basic.phpt
rename to amqp-1.7.1/tests/amqpchannel_construct_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_getChannelId.phpt b/amqp-1.7.1/tests/amqpchannel_getChannelId.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_getChannelId.phpt
rename to amqp-1.7.1/tests/amqpchannel_getChannelId.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_get_connection.phpt b/amqp-1.7.1/tests/amqpchannel_get_connection.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_get_connection.phpt
rename to amqp-1.7.1/tests/amqpchannel_get_connection.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_multi_channel_connection.phpt b/amqp-1.7.1/tests/amqpchannel_multi_channel_connection.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_multi_channel_connection.phpt
rename to amqp-1.7.1/tests/amqpchannel_multi_channel_connection.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_slots_usage.phpt b/amqp-1.7.1/tests/amqpchannel_slots_usage.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_slots_usage.phpt
rename to amqp-1.7.1/tests/amqpchannel_slots_usage.phpt
diff --git a/amqp-1.7.0/tests/amqpchannel_var_dump.phpt b/amqp-1.7.1/tests/amqpchannel_var_dump.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpchannel_var_dump.phpt
rename to amqp-1.7.1/tests/amqpchannel_var_dump.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_connect_login_failure.phpt b/amqp-1.7.1/tests/amqpconnection_connect_login_failure.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_connect_login_failure.phpt
rename to amqp-1.7.1/tests/amqpconnection_connect_login_failure.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_connection_getters.phpt b/amqp-1.7.1/tests/amqpconnection_connection_getters.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_connection_getters.phpt
rename to amqp-1.7.1/tests/amqpconnection_connection_getters.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_basic.phpt b/amqp-1.7.1/tests/amqpconnection_construct_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_basic.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_ini_read_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_ini_read_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_ini_read_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_ini_read_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_ini_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_ini_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_ini_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_ini_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_ini_timeout_and_read_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_ini_timeout_and_read_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_ini_timeout_and_read_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_ini_timeout_and_read_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_ini_timeout_default.phpt b/amqp-1.7.1/tests/amqpconnection_construct_ini_timeout_default.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_ini_timeout_default.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_ini_timeout_default.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_with_connect_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_with_connect_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_with_connect_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_with_connect_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_with_limits.phpt b/amqp-1.7.1/tests/amqpconnection_construct_with_limits.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_with_limits.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_with_limits.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_with_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_with_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_with_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_with_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_with_timeout_and_read_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_with_timeout_and_read_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_with_timeout_and_read_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_with_timeout_and_read_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_construct_with_write_timeout.phpt b/amqp-1.7.1/tests/amqpconnection_construct_with_write_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_construct_with_write_timeout.phpt
rename to amqp-1.7.1/tests/amqpconnection_construct_with_write_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_getUsedChannels.phpt b/amqp-1.7.1/tests/amqpconnection_getUsedChannels.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_getUsedChannels.phpt
rename to amqp-1.7.1/tests/amqpconnection_getUsedChannels.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_heartbeat.phpt b/amqp-1.7.1/tests/amqpconnection_heartbeat.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_heartbeat.phpt
rename to amqp-1.7.1/tests/amqpconnection_heartbeat.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_heartbeat_with_consumer.phpt b/amqp-1.7.1/tests/amqpconnection_heartbeat_with_consumer.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_heartbeat_with_consumer.phpt
rename to amqp-1.7.1/tests/amqpconnection_heartbeat_with_consumer.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_heartbeat_with_persistent.phpt b/amqp-1.7.1/tests/amqpconnection_heartbeat_with_persistent.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_heartbeat_with_persistent.phpt
rename to amqp-1.7.1/tests/amqpconnection_heartbeat_with_persistent.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_persistent_construct_basic.phpt b/amqp-1.7.1/tests/amqpconnection_persistent_construct_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_persistent_construct_basic.phpt
rename to amqp-1.7.1/tests/amqpconnection_persistent_construct_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_persistent_in_use.phpt b/amqp-1.7.1/tests/amqpconnection_persistent_in_use.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_persistent_in_use.phpt
rename to amqp-1.7.1/tests/amqpconnection_persistent_in_use.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_persistent_reusable.phpt b/amqp-1.7.1/tests/amqpconnection_persistent_reusable.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_persistent_reusable.phpt
rename to amqp-1.7.1/tests/amqpconnection_persistent_reusable.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setHost.phpt b/amqp-1.7.1/tests/amqpconnection_setHost.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setHost.phpt
rename to amqp-1.7.1/tests/amqpconnection_setHost.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setLogin.phpt b/amqp-1.7.1/tests/amqpconnection_setLogin.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setLogin.phpt
rename to amqp-1.7.1/tests/amqpconnection_setLogin.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setPassword.phpt b/amqp-1.7.1/tests/amqpconnection_setPassword.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setPassword.phpt
rename to amqp-1.7.1/tests/amqpconnection_setPassword.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setPort_int.phpt b/amqp-1.7.1/tests/amqpconnection_setPort_int.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setPort_int.phpt
rename to amqp-1.7.1/tests/amqpconnection_setPort_int.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setPort_out_of_range.phpt b/amqp-1.7.1/tests/amqpconnection_setPort_out_of_range.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setPort_out_of_range.phpt
rename to amqp-1.7.1/tests/amqpconnection_setPort_out_of_range.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setPort_string.phpt b/amqp-1.7.1/tests/amqpconnection_setPort_string.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setPort_string.phpt
rename to amqp-1.7.1/tests/amqpconnection_setPort_string.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setReadTimeout_float.phpt b/amqp-1.7.1/tests/amqpconnection_setReadTimeout_float.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setReadTimeout_float.phpt
rename to amqp-1.7.1/tests/amqpconnection_setReadTimeout_float.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setReadTimeout_int.phpt b/amqp-1.7.1/tests/amqpconnection_setReadTimeout_int.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setReadTimeout_int.phpt
rename to amqp-1.7.1/tests/amqpconnection_setReadTimeout_int.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setReadTimeout_out_of_range.phpt b/amqp-1.7.1/tests/amqpconnection_setReadTimeout_out_of_range.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setReadTimeout_out_of_range.phpt
rename to amqp-1.7.1/tests/amqpconnection_setReadTimeout_out_of_range.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setReadTimeout_string.phpt b/amqp-1.7.1/tests/amqpconnection_setReadTimeout_string.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setReadTimeout_string.phpt
rename to amqp-1.7.1/tests/amqpconnection_setReadTimeout_string.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setTimeout_deprecated.phpt b/amqp-1.7.1/tests/amqpconnection_setTimeout_deprecated.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setTimeout_deprecated.phpt
rename to amqp-1.7.1/tests/amqpconnection_setTimeout_deprecated.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setTimeout_float.phpt b/amqp-1.7.1/tests/amqpconnection_setTimeout_float.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setTimeout_float.phpt
rename to amqp-1.7.1/tests/amqpconnection_setTimeout_float.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setTimeout_int.phpt b/amqp-1.7.1/tests/amqpconnection_setTimeout_int.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setTimeout_int.phpt
rename to amqp-1.7.1/tests/amqpconnection_setTimeout_int.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setTimeout_out_of_range.phpt b/amqp-1.7.1/tests/amqpconnection_setTimeout_out_of_range.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setTimeout_out_of_range.phpt
rename to amqp-1.7.1/tests/amqpconnection_setTimeout_out_of_range.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setTimeout_string.phpt b/amqp-1.7.1/tests/amqpconnection_setTimeout_string.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setTimeout_string.phpt
rename to amqp-1.7.1/tests/amqpconnection_setTimeout_string.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setVhost.phpt b/amqp-1.7.1/tests/amqpconnection_setVhost.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setVhost.phpt
rename to amqp-1.7.1/tests/amqpconnection_setVhost.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setWriteTimeout_float.phpt b/amqp-1.7.1/tests/amqpconnection_setWriteTimeout_float.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setWriteTimeout_float.phpt
rename to amqp-1.7.1/tests/amqpconnection_setWriteTimeout_float.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setWriteTimeout_int.phpt b/amqp-1.7.1/tests/amqpconnection_setWriteTimeout_int.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setWriteTimeout_int.phpt
rename to amqp-1.7.1/tests/amqpconnection_setWriteTimeout_int.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setWriteTimeout_out_of_range.phpt b/amqp-1.7.1/tests/amqpconnection_setWriteTimeout_out_of_range.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setWriteTimeout_out_of_range.phpt
rename to amqp-1.7.1/tests/amqpconnection_setWriteTimeout_out_of_range.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_setWriteTimeout_string.phpt b/amqp-1.7.1/tests/amqpconnection_setWriteTimeout_string.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_setWriteTimeout_string.phpt
rename to amqp-1.7.1/tests/amqpconnection_setWriteTimeout_string.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_toomanychannels.phpt b/amqp-1.7.1/tests/amqpconnection_toomanychannels.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_toomanychannels.phpt
rename to amqp-1.7.1/tests/amqpconnection_toomanychannels.phpt
diff --git a/amqp-1.7.0/tests/amqpconnection_var_dump.phpt b/amqp-1.7.1/tests/amqpconnection_var_dump.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpconnection_var_dump.phpt
rename to amqp-1.7.1/tests/amqpconnection_var_dump.phpt
diff --git a/amqp-1.7.0/tests/amqpenvelope_construct.phpt b/amqp-1.7.1/tests/amqpenvelope_construct.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpenvelope_construct.phpt
rename to amqp-1.7.1/tests/amqpenvelope_construct.phpt
diff --git a/amqp-1.7.0/tests/amqpenvelope_get_accessors.phpt b/amqp-1.7.1/tests/amqpenvelope_get_accessors.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpenvelope_get_accessors.phpt
rename to amqp-1.7.1/tests/amqpenvelope_get_accessors.phpt
diff --git a/amqp-1.7.0/tests/amqpenvelope_var_dump.phpt b/amqp-1.7.1/tests/amqpenvelope_var_dump.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpenvelope_var_dump.phpt
rename to amqp-1.7.1/tests/amqpenvelope_var_dump.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_attributes.phpt b/amqp-1.7.1/tests/amqpexchange_attributes.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_attributes.phpt
rename to amqp-1.7.1/tests/amqpexchange_attributes.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_bind.phpt b/amqp-1.7.1/tests/amqpexchange_bind.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_bind.phpt
rename to amqp-1.7.1/tests/amqpexchange_bind.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_bind_with_arguments.phpt b/amqp-1.7.1/tests/amqpexchange_bind_with_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_bind_with_arguments.phpt
rename to amqp-1.7.1/tests/amqpexchange_bind_with_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_bind_without_key.phpt b/amqp-1.7.1/tests/amqpexchange_bind_without_key.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_bind_without_key.phpt
rename to amqp-1.7.1/tests/amqpexchange_bind_without_key.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_bind_without_key_with_arguments.phpt b/amqp-1.7.1/tests/amqpexchange_bind_without_key_with_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_bind_without_key_with_arguments.phpt
rename to amqp-1.7.1/tests/amqpexchange_bind_without_key_with_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_channel_refcount.phpt b/amqp-1.7.1/tests/amqpexchange_channel_refcount.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_channel_refcount.phpt
rename to amqp-1.7.1/tests/amqpexchange_channel_refcount.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_construct_basic.phpt b/amqp-1.7.1/tests/amqpexchange_construct_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_construct_basic.phpt
rename to amqp-1.7.1/tests/amqpexchange_construct_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_declare_basic.phpt b/amqp-1.7.1/tests/amqpexchange_declare_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_declare_basic.phpt
rename to amqp-1.7.1/tests/amqpexchange_declare_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_declare_existent.phpt b/amqp-1.7.1/tests/amqpexchange_declare_existent.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_declare_existent.phpt
rename to amqp-1.7.1/tests/amqpexchange_declare_existent.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_declare_with_stalled_reference.phpt b/amqp-1.7.1/tests/amqpexchange_declare_with_stalled_reference.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_declare_with_stalled_reference.phpt
rename to amqp-1.7.1/tests/amqpexchange_declare_with_stalled_reference.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_declare_without_name.phpt b/amqp-1.7.1/tests/amqpexchange_declare_without_name.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_declare_without_name.phpt
rename to amqp-1.7.1/tests/amqpexchange_declare_without_name.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_declare_without_type.phpt b/amqp-1.7.1/tests/amqpexchange_declare_without_type.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_declare_without_type.phpt
rename to amqp-1.7.1/tests/amqpexchange_declare_without_type.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_get_channel.phpt b/amqp-1.7.1/tests/amqpexchange_get_channel.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_get_channel.phpt
rename to amqp-1.7.1/tests/amqpexchange_get_channel.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_get_connection.phpt b/amqp-1.7.1/tests/amqpexchange_get_connection.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_get_connection.phpt
rename to amqp-1.7.1/tests/amqpexchange_get_connection.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_invalid_type.phpt b/amqp-1.7.1/tests/amqpexchange_invalid_type.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_invalid_type.phpt
rename to amqp-1.7.1/tests/amqpexchange_invalid_type.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_basic.phpt b/amqp-1.7.1/tests/amqpexchange_publish_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_basic.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_empty_routing_key.phpt b/amqp-1.7.1/tests/amqpexchange_publish_empty_routing_key.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_empty_routing_key.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_empty_routing_key.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_timeout.disabled b/amqp-1.7.1/tests/amqpexchange_publish_timeout.disabled
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_timeout.disabled
rename to amqp-1.7.1/tests/amqpexchange_publish_timeout.disabled
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_null.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_null.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_null.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_null.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_properties.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_properties.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_properties.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_properties.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_properties_ignore_num_header.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_properties_nested_header.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_properties_nested_header.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_properties_nested_header.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_properties_nested_header.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_publish_with_properties_user_id_failure.phpt b/amqp-1.7.1/tests/amqpexchange_publish_with_properties_user_id_failure.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_publish_with_properties_user_id_failure.phpt
rename to amqp-1.7.1/tests/amqpexchange_publish_with_properties_user_id_failure.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_setArgument.phpt b/amqp-1.7.1/tests/amqpexchange_setArgument.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_setArgument.phpt
rename to amqp-1.7.1/tests/amqpexchange_setArgument.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_set_flag.phpt b/amqp-1.7.1/tests/amqpexchange_set_flag.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_set_flag.phpt
rename to amqp-1.7.1/tests/amqpexchange_set_flag.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_set_flags.phpt b/amqp-1.7.1/tests/amqpexchange_set_flags.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_set_flags.phpt
rename to amqp-1.7.1/tests/amqpexchange_set_flags.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_unbind.phpt b/amqp-1.7.1/tests/amqpexchange_unbind.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_unbind.phpt
rename to amqp-1.7.1/tests/amqpexchange_unbind.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_unbind_with_arguments.phpt b/amqp-1.7.1/tests/amqpexchange_unbind_with_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_unbind_with_arguments.phpt
rename to amqp-1.7.1/tests/amqpexchange_unbind_with_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_unbind_without_key.phpt b/amqp-1.7.1/tests/amqpexchange_unbind_without_key.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_unbind_without_key.phpt
rename to amqp-1.7.1/tests/amqpexchange_unbind_without_key.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_unbind_without_key_with_arguments.phpt b/amqp-1.7.1/tests/amqpexchange_unbind_without_key_with_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_unbind_without_key_with_arguments.phpt
rename to amqp-1.7.1/tests/amqpexchange_unbind_without_key_with_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpexchange_var_dump.phpt b/amqp-1.7.1/tests/amqpexchange_var_dump.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpexchange_var_dump.phpt
rename to amqp-1.7.1/tests/amqpexchange_var_dump.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_attributes.phpt b/amqp-1.7.1/tests/amqpqueue_attributes.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_attributes.phpt
rename to amqp-1.7.1/tests/amqpqueue_attributes.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_bind_basic.phpt b/amqp-1.7.1/tests/amqpqueue_bind_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_bind_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_bind_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_bind_basic_empty_routing_key.phpt b/amqp-1.7.1/tests/amqpqueue_bind_basic_empty_routing_key.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_bind_basic_empty_routing_key.phpt
rename to amqp-1.7.1/tests/amqpqueue_bind_basic_empty_routing_key.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_bind_basic_headers_arguments.phpt b/amqp-1.7.1/tests/amqpqueue_bind_basic_headers_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_bind_basic_headers_arguments.phpt
rename to amqp-1.7.1/tests/amqpqueue_bind_basic_headers_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_cancel.phpt b/amqp-1.7.1/tests/amqpqueue_cancel.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_cancel.phpt
rename to amqp-1.7.1/tests/amqpqueue_cancel.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_construct_basic.phpt b/amqp-1.7.1/tests/amqpqueue_construct_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_construct_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_construct_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_consume_basic.phpt b/amqp-1.7.1/tests/amqpqueue_consume_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_consume_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_consume_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_consume_multiple.phpt b/amqp-1.7.1/tests/amqpqueue_consume_multiple.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_consume_multiple.phpt
rename to amqp-1.7.1/tests/amqpqueue_consume_multiple.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_consume_multiple_no_doubles.phpt b/amqp-1.7.1/tests/amqpqueue_consume_multiple_no_doubles.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_consume_multiple_no_doubles.phpt
rename to amqp-1.7.1/tests/amqpqueue_consume_multiple_no_doubles.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_consume_nonexistent.phpt b/amqp-1.7.1/tests/amqpqueue_consume_nonexistent.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_consume_nonexistent.phpt
rename to amqp-1.7.1/tests/amqpqueue_consume_nonexistent.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_consume_timeout.phpt b/amqp-1.7.1/tests/amqpqueue_consume_timeout.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_consume_timeout.phpt
rename to amqp-1.7.1/tests/amqpqueue_consume_timeout.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_declare_basic.phpt b/amqp-1.7.1/tests/amqpqueue_declare_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_declare_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_declare_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_declare_with_arguments.phpt b/amqp-1.7.1/tests/amqpqueue_declare_with_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_declare_with_arguments.phpt
rename to amqp-1.7.1/tests/amqpqueue_declare_with_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_declare_with_stalled_reference.phpt b/amqp-1.7.1/tests/amqpqueue_declare_with_stalled_reference.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_declare_with_stalled_reference.phpt
rename to amqp-1.7.1/tests/amqpqueue_declare_with_stalled_reference.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_delete_basic.phpt b/amqp-1.7.1/tests/amqpqueue_delete_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_delete_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_delete_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_empty_name.phpt b/amqp-1.7.1/tests/amqpqueue_empty_name.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_empty_name.phpt
rename to amqp-1.7.1/tests/amqpqueue_empty_name.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_basic.phpt b/amqp-1.7.1/tests/amqpqueue_get_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_channel.phpt b/amqp-1.7.1/tests/amqpqueue_get_channel.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_channel.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_channel.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_connection.phpt b/amqp-1.7.1/tests/amqpqueue_get_connection.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_connection.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_connection.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_empty_body.phpt b/amqp-1.7.1/tests/amqpqueue_get_empty_body.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_empty_body.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_empty_body.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_headers.phpt b/amqp-1.7.1/tests/amqpqueue_get_headers.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_headers.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_headers.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_get_nonexistent.phpt b/amqp-1.7.1/tests/amqpqueue_get_nonexistent.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_get_nonexistent.phpt
rename to amqp-1.7.1/tests/amqpqueue_get_nonexistent.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_nack.phpt b/amqp-1.7.1/tests/amqpqueue_nack.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_nack.phpt
rename to amqp-1.7.1/tests/amqpqueue_nack.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_nested_arrays.phpt b/amqp-1.7.1/tests/amqpqueue_nested_arrays.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_nested_arrays.phpt
rename to amqp-1.7.1/tests/amqpqueue_nested_arrays.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_nested_headers.phpt b/amqp-1.7.1/tests/amqpqueue_nested_headers.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_nested_headers.phpt
rename to amqp-1.7.1/tests/amqpqueue_nested_headers.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_purge_basic.phpt b/amqp-1.7.1/tests/amqpqueue_purge_basic.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_purge_basic.phpt
rename to amqp-1.7.1/tests/amqpqueue_purge_basic.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_setArgument.phpt b/amqp-1.7.1/tests/amqpqueue_setArgument.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_setArgument.phpt
rename to amqp-1.7.1/tests/amqpqueue_setArgument.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_unbind_basic_empty_routing_key.phpt b/amqp-1.7.1/tests/amqpqueue_unbind_basic_empty_routing_key.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_unbind_basic_empty_routing_key.phpt
rename to amqp-1.7.1/tests/amqpqueue_unbind_basic_empty_routing_key.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_unbind_basic_headers_arguments.phpt b/amqp-1.7.1/tests/amqpqueue_unbind_basic_headers_arguments.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_unbind_basic_headers_arguments.phpt
rename to amqp-1.7.1/tests/amqpqueue_unbind_basic_headers_arguments.phpt
diff --git a/amqp-1.7.0/tests/amqpqueue_var_dump.phpt b/amqp-1.7.1/tests/amqpqueue_var_dump.phpt
similarity index 100%
rename from amqp-1.7.0/tests/amqpqueue_var_dump.phpt
rename to amqp-1.7.1/tests/amqpqueue_var_dump.phpt
diff --git a/amqp-1.7.0/tests/bug_17831.phpt b/amqp-1.7.1/tests/bug_17831.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_17831.phpt
rename to amqp-1.7.1/tests/bug_17831.phpt
diff --git a/amqp-1.7.0/tests/bug_19707.phpt b/amqp-1.7.1/tests/bug_19707.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_19707.phpt
rename to amqp-1.7.1/tests/bug_19707.phpt
diff --git a/amqp-1.7.0/tests/bug_19840.phpt b/amqp-1.7.1/tests/bug_19840.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_19840.phpt
rename to amqp-1.7.1/tests/bug_19840.phpt
diff --git a/amqp-1.7.0/tests/bug_61533.phpt b/amqp-1.7.1/tests/bug_61533.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_61533.phpt
rename to amqp-1.7.1/tests/bug_61533.phpt
diff --git a/amqp-1.7.0/tests/bug_62354.phpt b/amqp-1.7.1/tests/bug_62354.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_62354.phpt
rename to amqp-1.7.1/tests/bug_62354.phpt
diff --git a/amqp-1.7.0/tests/bug_gh147.phpt b/amqp-1.7.1/tests/bug_gh147.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh147.phpt
rename to amqp-1.7.1/tests/bug_gh147.phpt
diff --git a/amqp-1.7.0/tests/bug_gh155_direct_reply_to.phpt b/amqp-1.7.1/tests/bug_gh155_direct_reply_to.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh155_direct_reply_to.phpt
rename to amqp-1.7.1/tests/bug_gh155_direct_reply_to.phpt
diff --git a/amqp-1.7.0/tests/bug_gh50-1.phpt b/amqp-1.7.1/tests/bug_gh50-1.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh50-1.phpt
rename to amqp-1.7.1/tests/bug_gh50-1.phpt
diff --git a/amqp-1.7.0/tests/bug_gh50-2.phpt b/amqp-1.7.1/tests/bug_gh50-2.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh50-2.phpt
rename to amqp-1.7.1/tests/bug_gh50-2.phpt
diff --git a/amqp-1.7.0/tests/bug_gh50-3.phpt b/amqp-1.7.1/tests/bug_gh50-3.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh50-3.phpt
rename to amqp-1.7.1/tests/bug_gh50-3.phpt
diff --git a/amqp-1.7.0/tests/bug_gh50-4.phpt b/amqp-1.7.1/tests/bug_gh50-4.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh50-4.phpt
rename to amqp-1.7.1/tests/bug_gh50-4.phpt
diff --git a/amqp-1.7.0/tests/bug_gh53-2.phpt b/amqp-1.7.1/tests/bug_gh53-2.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh53-2.phpt
rename to amqp-1.7.1/tests/bug_gh53-2.phpt
diff --git a/amqp-1.7.0/tests/bug_gh53.phpt b/amqp-1.7.1/tests/bug_gh53.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh53.phpt
rename to amqp-1.7.1/tests/bug_gh53.phpt
diff --git a/amqp-1.7.0/tests/bug_gh72-1.phpt b/amqp-1.7.1/tests/bug_gh72-1.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh72-1.phpt
rename to amqp-1.7.1/tests/bug_gh72-1.phpt
diff --git a/amqp-1.7.0/tests/bug_gh72-2.phpt b/amqp-1.7.1/tests/bug_gh72-2.phpt
similarity index 100%
rename from amqp-1.7.0/tests/bug_gh72-2.phpt
rename to amqp-1.7.1/tests/bug_gh72-2.phpt
diff --git a/amqp-1.7.0/tests/package-version.phpt b/amqp-1.7.1/tests/package-version.phpt
similarity index 100%
rename from amqp-1.7.0/tests/package-version.phpt
rename to amqp-1.7.1/tests/package-version.phpt
diff --git a/package.xml b/package.xml
index 91502b4..2913c85 100644
--- a/package.xml
+++ b/package.xml
@@ -1,781 +1,799 @@
<?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.10.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
<name>amqp</name>
<channel>pecl.php.net</channel>
<summary>Communicate with any AMQP compliant server</summary>
<description>This extension can communicate with any AMQP spec 0-9-1 compatible server, such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and delete exchanges and queues, as well as publish to any exchange and consume from any queue.</description>
<lead>
<name>Lars Strojny</name>
<user>lstrojny</user>
<email>lstrojny@php.net</email>
<active>yes</active>
</lead>
<lead>
<name>Pieter de Zwart</name>
<user>pdezwart</user>
<email>pdezwart@php.net</email>
<active>no</active>
</lead>
- <date>2016-04-26</date>
- <time>14:00:45</time>
+ <date>2016-07-09</date>
+ <time>14:58:52</time>
<version>
- <release>1.7.0</release>
+ <release>1.7.1</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP License</license>
<notes>
-* Add PHP7 support (Bogdan Padalko, Steffen Hanikel)
-* Add AMQPEnvelope::hasHeader(), AMQPExchange::hasArgument() and AMQPQueue::hasArgument() to check whether specific header exists (Bogdan Padalko)
-* Fix AMQPConnection::setPort() writes to wrong property (Bogdan Padalko)
-* Add compiled librabbitmq version early check (Bogdan Padalko)
-* Fix segfault when channel zval type != IS_OBJECT (Bogdan Padalko)
-* Fix API breakage when rabbitmq-c &lt; 0.6.0 used (Bogdan Padalko)
-* Close connection on library errors (Bogdan Padalko)
-* Do not store connection resource ID string (Bogdan Padalko)
-* Explicitly cleanup references on connection on cleanup (Bogdan Padalko)
-* Show effective connection values when connection is active and passed values otherwise (Bogdad Padalko)
-* Completely move to zend object custom objects (AMQPEnvelope, AMQPExchange and AMQPQueue) (Bogdan Padalko)
-* Use zend object on custom objects for properties storing (AMQPConnection and AMQPChannel) (Bogdan Padalko)
-* Fix not properly deleted connection resource. (Bogdan Padalko, Steffen Hanikel)
-* Fix not properly allocated and freed amqp_table_t arguments table memory. (Bogdan Padalko, Steffen Hanikel)
-* Upgrade vagrant box to Ubuntu 15.10 Wily Werwof (Bogdan Padalko)
-* Fix various grammar and spelling mistakes (Artem Gordinsky)
-* Update stubs (Sascha-Oliver Prolic)
+* Add support for pkg-config (Remi Collet)
+* Fixed wrongful truncation of amqp.password to the length of amqp.login (https://github.com/skobkars)
For a complete list of changes see:
-https://github.com/pdezwart/php-amqp/compare/v1.6.0...v1.7.0
+https://github.com/pdezwart/php-amqp/compare/v1.7.0...v1.7.1
</notes>
<contents>
<dir name="/">
<file md5sum="014bf3f2dc6df0c3a7646f05d65484a3" name="amqp.c" role="src" />
<file md5sum="d8f0ecb0a6f70750ec1cce10006c41a9" name="amqp_channel.c" role="src" />
<file md5sum="0d454a53c80dfcb29f8722dc1a2422c4" name="amqp_channel.h" role="src" />
- <file md5sum="8fce04be9f7866458ef0b72f0aa1aca2" name="amqp_connection.c" role="src" />
+ <file md5sum="16142bbf3ab0e686aa987b2b7f808977" name="amqp_connection.c" role="src" />
<file md5sum="c9574bd246e30279b807b324b7a44c8e" name="amqp_connection.h" role="src" />
<file md5sum="0924735a34a40de825d1ce8ab4c86e22" name="amqp_connection_resource.c" role="src" />
<file md5sum="a26ff5622b998fa2e9b0f489a3ba91d8" name="amqp_connection_resource.h" role="src" />
<file md5sum="dc959063b8da036cdbac53cf95f2a2d3" name="amqp_envelope.c" role="src" />
<file md5sum="b74f6e72cbe925d37a2850a690ec68fb" name="amqp_envelope.h" role="src" />
- <file md5sum="7f1bb8aef7a1875d9744152e7bf28b59" name="amqp_exchange.c" role="src" />
+ <file md5sum="8c0793e1124e2a825ebbc708b1ccae12" name="amqp_exchange.c" role="src" />
<file md5sum="29bc658d47714e64fdac91330e0f30e5" name="amqp_exchange.h" role="src" />
<file md5sum="219d6dae3e50c286257dfde3a2facb87" name="amqp_queue.c" role="src" />
<file md5sum="98bd60d86a6313b68f59979c641af774" name="amqp_queue.h" role="src" />
<file md5sum="e6a0bb12ddfb92719259ba531c092cad" name="php5_support.h" role="src" />
<file md5sum="52b8a355742ae108e27c0fca46f72d09" name="php7_support.h" role="src" />
- <file md5sum="262e2a7579540a653a8eb986b72f8fbc" name="php_amqp.h" role="src" />
- <file md5sum="41cb0d18585cf6c6cd1d2a710e81638b" name="config.m4" role="src" />
+ <file md5sum="478afc25615cd5e4e519d934df919c2e" name="php_amqp.h" role="src" />
+ <file md5sum="dad9a2d445074a6be05f3fb3bdfa4c27" name="config.m4" role="src" />
<file md5sum="a1374c4c873c7a4ab7d1a1f4572baf16" name="config.w32" role="src" />
<file md5sum="fef7c9a5d92ed9043d5a8f39c9a99fa7" name="benchmark.php" role="doc" />
<file md5sum="c2bc5a8aa3fb7f8d0c924f584e20809d" name="CREDITS" role="doc" />
<file md5sum="b3e70313289e3ea66cae3089b7e571b8" name="LICENSE" role="doc" />
<file md5sum="3d2f028b7fceb8cf35e56237338af93d" name="stubs/AMQP.php" role="doc" />
<file md5sum="6709d02e03739e36715987b4b1d1cbe3" name="stubs/AMQPChannel.php" role="doc" />
<file md5sum="d79254277f60751c4ba6697333af5d37" name="stubs/AMQPChannelException.php" role="doc" />
<file md5sum="4b583a70340946531387ad85c6ffab95" name="stubs/AMQPConnection.php" role="doc" />
<file md5sum="da1cd6ac1b51f2433904ce770e6f4ca3" name="stubs/AMQPConnectionException.php" role="doc" />
<file md5sum="5b31c8b75a49b122fe72c32c8c1ff59a" name="stubs/AMQPEnvelope.php" role="doc" />
<file md5sum="0b9b43b817a884d311f8f8013d8a5adc" name="stubs/AMQPException.php" role="doc" />
<file md5sum="4ba4a62fd5debb2453390e1a4da7d325" name="stubs/AMQPExchange.php" role="doc" />
<file md5sum="7d1035c7a2b82f9187b10f05fe882eed" name="stubs/AMQPExchangeException.php" role="doc" />
<file md5sum="f670cc7ecbb99576fa297ce55213d2ec" name="stubs/AMQPQueue.php" role="doc" />
<file md5sum="d7da0562e86197fc6bb0d12af0a25495" name="stubs/AMQPQueueException.php" role="doc" />
<file md5sum="62f984cea2d8bc5a06db4613512850fc" name="tests/_test_helpers.php.inc" role="test" />
<file md5sum="a0301397259981c1946f7c59c01308dd" name="tests/amqpchannel_basicRecover.phpt" role="test" />
<file md5sum="804eb9007733180f4300197288e7cd30" name="tests/amqpchannel_construct_basic.phpt" role="test" />
<file md5sum="fbb15ebdf594756a61ff250318fbecbc" name="tests/amqpchannel_getChannelId.phpt" role="test" />
<file md5sum="9c9cc955cdfd88e9824613aa90cc07aa" name="tests/amqpchannel_get_connection.phpt" role="test" />
<file md5sum="8df78eedf3254e35401bb04b5f921e45" name="tests/amqpchannel_multi_channel_connection.phpt" role="test" />
<file md5sum="7ed3240775603a7ddbf37e6876e61e45" name="tests/amqpchannel_slots_usage.phpt" role="test" />
<file md5sum="f1917f805476ef23a712b177a2663778" name="tests/amqpchannel_var_dump.phpt" role="test" />
<file md5sum="6c380b88cdd43f18c4d2a9e226fe0b60" name="tests/amqpconnection_connect_login_failure.phpt" role="test" />
<file md5sum="ab671ce4cfeefa0f77caca47fc3926b5" name="tests/amqpconnection_connection_getters.phpt" role="test" />
<file md5sum="64c152378d6dea3efd16e59e64cdef55" name="tests/amqpconnection_construct_basic.phpt" role="test" />
<file md5sum="5824298e6564f6e9231d196114d1c77e" name="tests/amqpconnection_construct_ini_read_timeout.phpt" role="test" />
<file md5sum="5e6235fbdbc75cbd99cad1c0617a3269" name="tests/amqpconnection_construct_ini_timeout.phpt" role="test" />
<file md5sum="97e9d595eab5d25db6bcbb050f9c5f19" name="tests/amqpconnection_construct_ini_timeout_and_read_timeout.phpt" role="test" />
<file md5sum="cafbd1b8ec295026c37ac67a9e779b3c" name="tests/amqpconnection_construct_ini_timeout_default.phpt" role="test" />
<file md5sum="f851af4db4ff8b90ea80cb9bc395cee5" name="tests/amqpconnection_construct_with_connect_timeout.phpt" role="test" />
<file md5sum="042d3431112a369ac17a642d9fdc2b11" name="tests/amqpconnection_construct_with_limits.phpt" role="test" />
<file md5sum="ae036274132482eb5662da360a6af391" name="tests/amqpconnection_construct_with_timeout.phpt" role="test" />
<file md5sum="0b5526b800bc605338584d214e05b5e1" name="tests/amqpconnection_construct_with_timeout_and_read_timeout.phpt" role="test" />
<file md5sum="6e7be2cf0ba67bdbd51b4549d4a05d95" name="tests/amqpconnection_construct_with_write_timeout.phpt" role="test" />
<file md5sum="b23b3ac5c6d68ebd53e7b56f447b699a" name="tests/amqpconnection_getUsedChannels.phpt" role="test" />
<file md5sum="57a0cba0490452093d7ea60b572b664c" name="tests/amqpconnection_heartbeat.phpt" role="test" />
<file md5sum="4f8d0a154106a45e1e25c43818b93b67" name="tests/amqpconnection_heartbeat_with_consumer.phpt" role="test" />
<file md5sum="c912cbcf9f81d06cec06473700262893" name="tests/amqpconnection_heartbeat_with_persistent.phpt" role="test" />
<file md5sum="9e7f8576ff71311929ecae5119712906" name="tests/amqpconnection_persistent_construct_basic.phpt" role="test" />
<file md5sum="cc14d8575873810f182d6a5caf88e9f1" name="tests/amqpconnection_persistent_in_use.phpt" role="test" />
<file md5sum="cad266168a54c7b9aeddfe85c6f647b5" name="tests/amqpconnection_persistent_reusable.phpt" role="test" />
<file md5sum="2cb04633b3e25285b16eba11c468091e" name="tests/amqpconnection_setHost.phpt" role="test" />
<file md5sum="2d98d2921087152f05baf03b4c3d38f9" name="tests/amqpconnection_setLogin.phpt" role="test" />
<file md5sum="b947e9a0862c329d77b3c1c359e06d1e" name="tests/amqpconnection_setPassword.phpt" role="test" />
<file md5sum="98c04e50c1f828a1dbac1f5615a29895" name="tests/amqpconnection_setPort_int.phpt" role="test" />
<file md5sum="7c24ac91124bd6bbffd3ef302cfd1721" name="tests/amqpconnection_setPort_out_of_range.phpt" role="test" />
<file md5sum="f3851993f5d2be8bfd6093825c308b8e" name="tests/amqpconnection_setPort_string.phpt" role="test" />
<file md5sum="8223be5940730e6ca06f80d2a7e7460e" name="tests/amqpconnection_setReadTimeout_float.phpt" role="test" />
<file md5sum="8393a7fea7816e107d3e1c56d6511a6b" name="tests/amqpconnection_setReadTimeout_int.phpt" role="test" />
<file md5sum="acc371cda24e1225060e2be3635e96c4" name="tests/amqpconnection_setReadTimeout_out_of_range.phpt" role="test" />
<file md5sum="8f3d1d22f5af666600b19ec4d20e72d2" name="tests/amqpconnection_setReadTimeout_string.phpt" role="test" />
<file md5sum="2887356c3bd4544d08f97f1266e9028d" name="tests/amqpconnection_setTimeout_deprecated.phpt" role="test" />
<file md5sum="fca046c775db1ea3087458a1561c227a" name="tests/amqpconnection_setTimeout_float.phpt" role="test" />
<file md5sum="40dfd77c4c08f8528951d47e42cda7fb" name="tests/amqpconnection_setTimeout_int.phpt" role="test" />
<file md5sum="d0cd2aa004803b2f05ab467edf4f1036" name="tests/amqpconnection_setTimeout_out_of_range.phpt" role="test" />
<file md5sum="28ef38b64e446ac2dfcc748862387ceb" name="tests/amqpconnection_setTimeout_string.phpt" role="test" />
<file md5sum="b045ae9098ff06a00ee7146d8d413a69" name="tests/amqpconnection_setVhost.phpt" role="test" />
<file md5sum="1b5380a431ebf72b2c0b8a5f6e370721" name="tests/amqpconnection_setWriteTimeout_float.phpt" role="test" />
<file md5sum="eb34d68a4069135dac436bf2b3cf2b8f" name="tests/amqpconnection_setWriteTimeout_int.phpt" role="test" />
<file md5sum="1557d33bc6c620c3cb6f64aefec95eb6" name="tests/amqpconnection_setWriteTimeout_out_of_range.phpt" role="test" />
<file md5sum="63efc639ba17621d65facd6a957e4a3e" name="tests/amqpconnection_setWriteTimeout_string.phpt" role="test" />
<file md5sum="f27e48180e45ffaff7fc2945b2bb6718" name="tests/amqpconnection_toomanychannels.phpt" role="test" />
<file md5sum="d98dda1d117bd865e8f66528e1b0fc04" name="tests/amqpconnection_var_dump.phpt" role="test" />
<file md5sum="8f90f050a53b2282dd5a128b59090c04" name="tests/amqpenvelope_construct.phpt" role="test" />
<file md5sum="161808887e2fe1de616358d317e2e864" name="tests/amqpenvelope_get_accessors.phpt" role="test" />
<file md5sum="c68a52e419cf2eae84b2b06ed67668fd" name="tests/amqpenvelope_var_dump.phpt" role="test" />
<file md5sum="30f0ddcd3250d0c6d95cad54ae7d0f29" name="tests/amqpexchange_attributes.phpt" role="test" />
<file md5sum="3cdd27b9ac134c99278e13a7783ee0bf" name="tests/amqpexchange_bind.phpt" role="test" />
<file md5sum="a8d465a0ba6d926e77b03a0af44972d8" name="tests/amqpexchange_bind_with_arguments.phpt" role="test" />
<file md5sum="0d1917327d0be2a106107fd40da240c2" name="tests/amqpexchange_bind_without_key.phpt" role="test" />
<file md5sum="14d8f19aaa7ef5dfc6433a69ad1392f7" name="tests/amqpexchange_bind_without_key_with_arguments.phpt" role="test" />
<file md5sum="5c0c19fbe0080234182f77b88f8a3b49" name="tests/amqpexchange_channel_refcount.phpt" role="test" />
<file md5sum="e14bc6d3e6bf2db658522fd880ff8342" name="tests/amqpexchange_construct_basic.phpt" role="test" />
<file md5sum="978a4d0d8bf603990e99d686d6298dcf" name="tests/amqpexchange_declare_basic.phpt" role="test" />
<file md5sum="e910acd5d274bb722be2e4c5c564eacf" name="tests/amqpexchange_declare_existent.phpt" role="test" />
<file md5sum="d7a2c25b330285bb5b3818beb5d9e292" name="tests/amqpexchange_declare_with_stalled_reference.phpt" role="test" />
<file md5sum="f23ce6bce7828675f4ab2229ff909b09" name="tests/amqpexchange_declare_without_name.phpt" role="test" />
<file md5sum="c11306122ecaee5dd84ab45ba1c83fc2" name="tests/amqpexchange_declare_without_type.phpt" role="test" />
<file md5sum="8e5fb0edb96401eb40b02fa96403231b" name="tests/amqpexchange_get_channel.phpt" role="test" />
<file md5sum="f7576d0cfaba1da1861438f9372cb221" name="tests/amqpexchange_get_connection.phpt" role="test" />
<file md5sum="bf2e1921405cd73178fba23fdc94812c" name="tests/amqpexchange_invalid_type.phpt" role="test" />
<file md5sum="28d40d0147069b95f19370dabcc05d51" name="tests/amqpexchange_publish_basic.phpt" role="test" />
<file md5sum="4d07c2070b00e062b8dbeb3ba47e7423" name="tests/amqpexchange_publish_empty_routing_key.phpt" role="test" />
<file md5sum="ad68e777e537d8610bab90d3fcb8eb50" name="tests/amqpexchange_publish_timeout.disabled" role="test" />
<file md5sum="22b69d2bfab58d6d710ee796c04a91fd" name="tests/amqpexchange_publish_with_null.phpt" role="test" />
<file md5sum="8127175c0c129fd4d6359636f058bc21" name="tests/amqpexchange_publish_with_properties.phpt" role="test" />
<file md5sum="100a493cfe499876c744c6320021f6d5" name="tests/amqpexchange_publish_with_properties_ignore_num_header.phpt" role="test" />
<file md5sum="e70ffc740233f2a84d6e98234584c195" name="tests/amqpexchange_publish_with_properties_ignore_unsupported_header_values.phpt" role="test" />
<file md5sum="fe5c26b2041d25fd4b5895c84c6ceee1" name="tests/amqpexchange_publish_with_properties_nested_header.phpt" role="test" />
<file md5sum="4137d0f1d5b6a9e6a9cf08a0f25bd3fc" name="tests/amqpexchange_publish_with_properties_user_id_failure.phpt" role="test" />
<file md5sum="d492b21a3377b56f412fc5e7598cc9f6" name="tests/amqpexchange_setArgument.phpt" role="test" />
<file md5sum="6692eef7a0bb10e53ef74e1809e3dd85" name="tests/amqpexchange_set_flag.phpt" role="test" />
<file md5sum="72246bd590a606e6c6241cfb4276a1d2" name="tests/amqpexchange_set_flags.phpt" role="test" />
<file md5sum="647497c26f3df6a927848a51bb871fc8" name="tests/amqpexchange_unbind.phpt" role="test" />
<file md5sum="f638c9fc507429242b9ddcd775f99abc" name="tests/amqpexchange_unbind_with_arguments.phpt" role="test" />
<file md5sum="db754e7e6d2dba44ab49f92b736e1de4" name="tests/amqpexchange_unbind_without_key.phpt" role="test" />
<file md5sum="497f46c611f6520f68a56f244a594a4b" name="tests/amqpexchange_unbind_without_key_with_arguments.phpt" role="test" />
<file md5sum="a9f0f43687589217617202ee6c42c839" name="tests/amqpexchange_var_dump.phpt" role="test" />
<file md5sum="e4497ed4ca0eb82c5c757714adbcc922" name="tests/amqpqueue_attributes.phpt" role="test" />
<file md5sum="4a0a5a690b1f784d85bd040302575a3d" name="tests/amqpqueue_bind_basic.phpt" role="test" />
<file md5sum="da143124281d829386f617269ec93fcf" name="tests/amqpqueue_bind_basic_empty_routing_key.phpt" role="test" />
<file md5sum="de63dbee4f05ec49ce48ec198b843f4b" name="tests/amqpqueue_bind_basic_headers_arguments.phpt" role="test" />
<file md5sum="9b39051f8ef3472bb23b9748da28314d" name="tests/amqpqueue_cancel.phpt" role="test" />
<file md5sum="2fc0d97c30d609f40b7c85f529d3f752" name="tests/amqpqueue_construct_basic.phpt" role="test" />
<file md5sum="3afae78709d63c465942a12b87e4be7a" name="tests/amqpqueue_consume_basic.phpt" role="test" />
<file md5sum="e772e975f5b3d44935e6bb7766ad88e1" name="tests/amqpqueue_consume_multiple.phpt" role="test" />
<file md5sum="5e36e341a8797edeee72397d8adcb7bb" name="tests/amqpqueue_consume_multiple_no_doubles.phpt" role="test" />
<file md5sum="3cfe9025a23532d552f23fc54d2826d8" name="tests/amqpqueue_consume_nonexistent.phpt" role="test" />
<file md5sum="036b629ee10295b0807c73719f22c27f" name="tests/amqpqueue_consume_timeout.phpt" role="test" />
<file md5sum="52fff1bf831ded585e3f8819504204b8" name="tests/amqpqueue_declare_basic.phpt" role="test" />
<file md5sum="443dfd9d12d9a3e204c37938011889a5" name="tests/amqpqueue_declare_with_arguments.phpt" role="test" />
<file md5sum="47e3a1281d79d093d4b72905b67beddf" name="tests/amqpqueue_declare_with_stalled_reference.phpt" role="test" />
<file md5sum="589544992486dc8be9060c3a9ed0c531" name="tests/amqpqueue_delete_basic.phpt" role="test" />
<file md5sum="5f559bb943f89d6d2b7f5ab1a85dc42b" name="tests/amqpqueue_empty_name.phpt" role="test" />
<file md5sum="0ad1ccd80ce1b4e8ba724b5938d55f8b" name="tests/amqpqueue_get_basic.phpt" role="test" />
<file md5sum="6cce48f3831c2d78e92ef263097386d9" name="tests/amqpqueue_get_channel.phpt" role="test" />
<file md5sum="5d764f35a9635bd532e9af55f6e63f41" name="tests/amqpqueue_get_connection.phpt" role="test" />
<file md5sum="3148d357f550c22bd83ec5339ca63133" name="tests/amqpqueue_get_empty_body.phpt" role="test" />
<file md5sum="512095e9f3e98adc9ffd3a5406920c62" name="tests/amqpqueue_get_headers.phpt" role="test" />
<file md5sum="a591a624eb357a0ef50fc71f0465974d" name="tests/amqpqueue_get_nonexistent.phpt" role="test" />
<file md5sum="0f586fa4ee026cef30cf5d330af1133e" name="tests/amqpqueue_nack.phpt" role="test" />
<file md5sum="c61d7596374c94b3adc4fab185d00c80" name="tests/amqpqueue_nested_arrays.phpt" role="test" />
<file md5sum="48b536f91b376a32aad882a14ad26b59" name="tests/amqpqueue_nested_headers.phpt" role="test" />
<file md5sum="abaf080a5feab914919e8bcf837e9d83" name="tests/amqpqueue_purge_basic.phpt" role="test" />
<file md5sum="300752e855d987475b120082400677c0" name="tests/amqpqueue_setArgument.phpt" role="test" />
<file md5sum="cc8d6bd67a59536e3a92a3550016e82e" name="tests/amqpqueue_unbind_basic_empty_routing_key.phpt" role="test" />
<file md5sum="49ab1e6c77ed9331b5371c04faf95653" name="tests/amqpqueue_unbind_basic_headers_arguments.phpt" role="test" />
<file md5sum="6b98df625b9028965720fcfde8a5042e" name="tests/amqpqueue_var_dump.phpt" role="test" />
<file md5sum="efbcc35b58c7b65064660ca65fb1f8da" name="tests/bug_17831.phpt" role="test" />
<file md5sum="d85e785d26e265b242b94af5ed2fa046" name="tests/bug_19707.phpt" role="test" />
<file md5sum="aac2b2dbbea1bef2322ac549e416ca38" name="tests/bug_19840.phpt" role="test" />
<file md5sum="cbbb08c5c32b68a0b42a59a9d760c4a7" name="tests/bug_61533.phpt" role="test" />
<file md5sum="70c4b1222072be9591ff0f2d6bd4a0c9" name="tests/bug_62354.phpt" role="test" />
<file md5sum="4f646dfe852ca88d292c987b4b16a71f" name="tests/bug_gh147.phpt" role="test" />
<file md5sum="6157e371b447ebf125b36340ebbac39c" name="tests/bug_gh155_direct_reply_to.phpt" role="test" />
<file md5sum="764b70058dc0694eb7060c50f9bda611" name="tests/bug_gh50-1.phpt" role="test" />
<file md5sum="61c947c8bcc32226f09c845f1ca69734" name="tests/bug_gh50-2.phpt" role="test" />
<file md5sum="555901187984375d0eda9fd2aa5fb9ed" name="tests/bug_gh50-3.phpt" role="test" />
<file md5sum="c791ab105f32830962f2961745dc433e" name="tests/bug_gh50-4.phpt" role="test" />
<file md5sum="b7c71b6b0c0653eafe9f8caa15335975" name="tests/bug_gh53-2.phpt" role="test" />
<file md5sum="6dab7744024b4d6258141513c15ed102" name="tests/bug_gh53.phpt" role="test" />
<file md5sum="d8de8918a3c73ebdcb4159581ea58b5f" name="tests/bug_gh72-1.phpt" role="test" />
<file md5sum="0bed5ba885ea925a6045502569a1e946" name="tests/bug_gh72-2.phpt" role="test" />
<file md5sum="212e44c003f3b950b3f85958fdc5a367" name="tests/package-version.phpt" role="test" />
</dir>
</contents>
<dependencies>
<required>
<php>
<min>5.3.0</min>
</php>
<pearinstaller>
<min>1.4.0</min>
</pearinstaller>
</required>
</dependencies>
<providesextension>amqp</providesextension>
<extsrcrelease>
<configureoption default="autodetect" name="with-librabbitmq-dir" prompt="Set the path to librabbitmq install prefix" />
</extsrcrelease>
<changelog>
+ <release>
+ <version>
+ <release>1.7.0</release>
+ <api>1.0.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <license uri="http://www.php.net/license">PHP License</license>
+ <notes>
+* Add PHP7 support (Bogdan Padalko, Steffen Hanikel)
+* Add AMQPEnvelope::hasHeader(), AMQPExchange::hasArgument() and AMQPQueue::hasArgument() to check whether specific header exists (Bogdan Padalko)
+* Fix AMQPConnection::setPort() writes to wrong property (Bogdan Padalko)
+* Add compiled librabbitmq version early check (Bogdan Padalko)
+* Fix segfault when channel zval type != IS_OBJECT (Bogdan Padalko)
+* Fix API breakage when rabbitmq-c &lt; 0.6.0 used (Bogdan Padalko)
+* Close connection on library errors (Bogdan Padalko)
+* Do not store connection resource ID string (Bogdan Padalko)
+* Explicitly cleanup references on connection on cleanup (Bogdan Padalko)
+* Show effective connection values when connection is active and passed values otherwise (Bogdad Padalko)
+* Completely move to zend object custom objects (AMQPEnvelope, AMQPExchange and AMQPQueue) (Bogdan Padalko)
+* Use zend object on custom objects for properties storing (AMQPConnection and AMQPChannel) (Bogdan Padalko)
+* Fix not properly deleted connection resource. (Bogdan Padalko, Steffen Hanikel)
+* Fix not properly allocated and freed amqp_table_t arguments table memory. (Bogdan Padalko, Steffen Hanikel)
+* Upgrade vagrant box to Ubuntu 15.10 Wily Werwof (Bogdan Padalko)
+* Fix various grammar and spelling mistakes (Artem Gordinsky)
+* Update stubs (Sascha-Oliver Prolic)
+
+For a complete list of changes see:
+https://github.com/pdezwart/php-amqp/compare/v1.6.0...v1.7.0
+ </notes>
+ </release>
<release>
<version>
<release>1.7.0alpha2</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP License</license>
<notes>
* Fix AMQPConnection::setPort() writes to wrong property (Bogdan Padalko)
* Upgrade vagrant box to Ubuntu 15.10 Wily Werwof (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.7.0alpha1...v1.7.0alpha2
</notes>
</release>
<release>
<version>
<release>1.7.0alpha1</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP License</license>
<notes>
* Add PHP7 support (Bogdan Padalko, Steffen Hanikel)
* Add AMQPEnvelope::hasHeader(), AMQPExchange::hasArgument() and AMQPQueue::hasArgument() to check whether specific header exists (Bogdan Padalko)
* Completely move to zend object custom objects (AMQPEnvelope, AMQPExchange and AMQPQueue) (Bogdan Padalko)
* Use zend object on custom objects for properties storing (AMQPConnection and AMQPChannel) (Bogdan Padalko)
* Fix not properly deleted connection resource. (Bogdan Padalko, Steffen Hanikel)
* Fix not properly allocated and freed amqp_table_t arguments table memory. (Bogdan Padalko, Steffen Hanikel)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.6.0...v1.7.0alpha1
</notes>
</release>
<release>
<version>
<release>1.6.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2015-11-03</date>
<license uri="http://www.opensource.org/licenses/bsd-license.php">BSD style</license>
<notes>
1.6.0 Release:
* Various build fixes (Remi Collet)
* librabbitmq 0.5 compatibility (Remi Collet)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.6.0beta4...v1.6.0
</notes>
</release>
<release>
<version>
<release>1.6.0beta4</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2015-09-18</date>
<notes>
1.6.0beta4 Release:
* Add ability to re-attach consuming callback (Bogdan Padalko)
* Add AMQPQueue::getConsumerTag() method and fix consumer tag handling in AMQPQueue class methods (Bogdan Padalko)
* Add channel_max, frame_max and hearbeat support (see AMQPConnection::__construct() method) (librabbitmq version &gt;= 0.6.0 required) (Bogdan Padalko)
* Fix issue with message truncating to first null-byte during sending (Bogdan Padalko, special thanks to Alex Kazinskiy, Alvaro Videla and Michael Klishin)
* Fix issue with message truncating to first null-byte during sending (Bogdan Padalko)
* Fix invalid delivery mode returned by AMQPEnvelop::getDeliveryMode (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.6.0beta3...v1.6.0beta4
</notes>
</release>
<release>
<version>
<release>1.6.0beta3</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2015-04-18</date>
<notes>
1.6.0beta3 Release:
* Add basic.recover AMQP method support (see AMQPChannel::basicRecover() method) (Bogdan Padalko)
* Fix building on OS X (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.6.0beta2...v1.6.0beta3
</notes>
</release>
<release>
<version>
<release>1.6.0beta2</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2015-01-27</date>
<notes>
1.6.0beta2 Release:
* Pulled 1.6.0beta1, as it had the stable tag
* Add support for nested arguments values (Bogdan Padalko)
* Add auto_delete and internal flags support for AMQPExchange::declare (librabbitmq version &gt; 0.5.2 required) (Bogdan Padalko)
* Fix persistence support (Bogdan Padalko)
* Add AMQPExchange::unbind method and fix AMQPExchange::bind method. WARNING: this can potentially break BC (Bogdan Padalko)
* Add support to consume messages from multiple queues (Bogdan Padalko)
* Add AMQP_DURABLE flag support to AMQPExchange::setFlags (librabbitmq version &gt; 0.5.2 required) (Bogdan Padalko)
* Fix inconsistent INI values comparison which leads to deprecation warnings (Bogdan Padalko)
* Various segfault and memory leak fixes (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.4.0...v1.6.0beta2
</notes>
</release>
<release>
<version>
<release>1.4.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2014-04-14</date>
<notes>
1.4.0 Release:
* Fix #72: Publishing to an exchange with an empty name is valid and should not throw an exception (lstrojny)
* Fix #77: AMQPQueue::delete() now no longer returns a boolean, but an integer of how many messages were deleted. WARNING: this can potentially break BC (Bogdan Padalko)
* Fix #75: adhering to the AMQP spec by closing channel and sometimes even the connection in case of certain errors (Bogdan Padalko)
* Fix #81: Add optional arguments parameter to bind()/unbind() (Michael Squires)
* Fix #82: additional getters (getChannel(), getConnection()) (Bogdan Padalko)
* Fix #92: fix various memory leaks in the AMQPConnection class (Lars Strojny)
* Using amqp_error_string2() instead of deprecated amqp_error_string() (Lars Strojny)
* Fix memory leaks in setHost, setLogin, setPassword, setVhost (Lars Strojny, Bogdan Padalko)
* Fixed a memleak in php_amqp_connect (Julien Pauli)
* Use rabbitmq-c defaults for max channels and default frame size (Bogdan Padalko)
* Fix socket timeout error when connecting over high-latency network (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.4.0beta2...v1.4.0
</notes>
</release>
<release>
<version>
<release>1.4.0beta2</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2014-03-08</date>
<notes>
1.4.0beta2 Release:
* -
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.4.0beta1...v1.4.0beta2
</notes>
</release>
<release>
<version>
<release>1.4.0beta1</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2014-01-15</date>
<notes>
1.4.0beta1 Release:
* -
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.3.0...v1.4.0beta1
</notes>
</release>
<release>
<version>
<release>1.3.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>beta</release>
<api>stable</api>
</stability>
<date>2013-11-25</date>
<notes>
1.3.0 Release:
* Allow retrieving auto-delete exchanges (Guilherme Blanco)
* Add connection timeout support. This requires bumping the version requirement for librabbitmq to &gt;= 0.4.1 (Bogdan Padalko)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.2.0...v1.3.0
</notes>
</release>
<release>
<version>
<release>1.2.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2013-05-28</date>
<notes>
1.2.0 Release:
* New methods AMQPChannel::getPrefetchCount() and AMQPChannel::getPrefetchSize()
* Deprecate AMQPQueue::declare() in favor of AMQPQueue::declareQueue()
* Deprecate AMQPExchange::declare() in favor of AMQPExchange::declareExchange()
* Smaller fixes to our stubs
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.0.10...v1.2.0
</notes>
</release>
<release>
<version>
<release>1.0.10</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2013-05-28</date>
<notes>
1.0.10 Release:
* report correct version in module info (Lars Strojny)
* fix class interface definitions (Vladimir Kartaviy)
* add ability to bind a queue with an empty routing key (Vladimir Kartaviy)
* fix constant AMQP_IFUNUSED (Florin Patan, Bernhard Weisshuhn)
* added stubs for ide use (Vladimir Kartaviy, Bernhard Weisshuhn)
* Fixed memory leak in queue-&gt;declareQueue (Ilya a.k.a. coodix)
* support for php 5.5 (Lars Strojny)
* add support for read and write timeouts (Bogdan Padalko)
* fix memory leak in queue-&gt;consume (Dmitry Vinogradov)
* add support for custom exchange types (empi89)
* support for nested custom headers (Bernhard Weisshuhn)
* fix memory (Bernhard Weisshuhn)
For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.0.9...v1.0.10
</notes>
</release>
<release>
<version>
<release>1.0.9</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-11-13</date>
<notes>
1.0.9 Release:
* Fix pecl relase
</notes>
</release>
<release>
<version>
<release>1.0.8</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-11-12</date>
<notes>
1.0.8 Release:
* Skip var_dump test on PHP 5.2
* Initialize consumer tag string length to zero
* Support connection time outs
* Adding consumer_tag parameter to AMQPQueue::cancel
* Clean up error code handling
</notes>
</release>
<release>
<version>
<release>1.0.7</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-09-10</date>
<notes>
1.0.7 Release:
* Adding missing macros
</notes>
</release>
<release>
<version>
<release>1.0.6</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-09-10</date>
<notes>
1.0.6 Release:
* 62354: Segmentation fault when printing or dumping an object that contains an AMQP object
* Adding in missing tests
* Fixing release number in PHP information
* Adding .gitignore info for Git users
* Cleaning up debug handling
</notes>
</release>
<release>
<version>
<release>1.0.5</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-08-26</date>
<notes>
1.0.5 Release:
* 62696: Incorrect exchange type
* Handles server connections being closed during consume and publish correctly
* 62628: Exception thrown in consume will lock PHP
* 61533: Segmentation fault when instantiating channel, queue or exchange with wrong object, then using it
</notes>
</release>
<release>
<version>
<release>1.0.4</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-07-18</date>
<notes>
1.0.4 Release:
* 62549: Fixing broken persistent connection
* 62412: Fixing segfault due to destruction order
* 62411: Fixing declaration overload bug
* 62410: Fixing declaration overload for 5.4
* 61337: Adding License file
* 61749: Fixing handling for binary content in envelope
* 62087: Adding appropriate version information
* 62354: Enabling debugging dumping of objects
* 61351: Updating min PHP version requirements to 5.2.0
</notes>
</release>
<release>
<version>
<release>1.0.3</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-05-19</date>
<notes>
1.0.3 Release:
* Fixing compilation issue with PHP 5.4
* Memory leak when using AMQPQueue::get from a queue with no messages
</notes>
</release>
<release>
<version>
<release>1.0.1</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-03-02</date>
<notes>
1.0.1 Release:
Fixed bug:
* 61247: Allow queue creation with empty queue name, and return auto generated name
* 61127: Segmentation fault when cleaning up an AMQPChannel without calling AMQPConnection::connect first
</notes>
</release>
<release>
<version>
<release>1.0.0</release>
<api>1.0.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2012-02-15</date>
<notes>
1.0.0 Release:
Changed/finalized API signature:
* Exposing AMQPChannel
* Exposing AMQPEnvelope
* Exposing more queue and exchange arguments and flags
* Exposing basic.qos
Added persistent connections
Cleaned up codebase
Fixed memory leaks and segmentation faults
</notes>
</release>
<release>
<version>
<release>0.3.1</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2011-09-08</date>
<notes>
0.3.1 Release:
Fixed bug:
* 24323: Cannot get the name for auto-named reply-to queues
</notes>
</release>
<release>
<version>
<release>0.3.0</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2011-06-09</date>
<notes>
0.3.0 Release:
Fixed memory leaks in many functions (courtesy Jonathan Tansavatdi and Andy Wick)
Fixed consume method to return proper values
Cleaned up variable usage
Fixed bugs:
* 22638: Unexpected exit code 1 with AMQPQueue::consume()
* 22698: AMQPQueue::consume
</notes>
</release>
<release>
<version>
<release>0.2.2</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2011-01-02</date>
<notes>
0.2.2 Release:
Made extension compatible with PHP lt 5.3 (courtesy John Skopis)
Fixed wrong typing of message properties (courtesy John Skopis)
</notes>
</release>
<release>
<version>
<release>0.2.1</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2010-12-10</date>
<notes>
0.2.1 Release:
Fixed refcount decrementing bug causing segfaults.
</notes>
</release>
<release>
<version>
<release>0.2.0</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2010-12-10</date>
<notes>
0.2.0 Release:
Works with AMQP 0-8 and 0-9-1 (used by RabbitMQ 2.*)
Modified AMQPConnection object:
* Requires call to &apos;connect&apos; method to connect (no longer connects on instantiation)
* Added support for disconnect and reconnect
* Added helper setters for port, host, vhost, login and password
Improved consume method to block for MIN messages, and try to get MAX messages if available
Fixed zval descoping bugs
Fixed bugs:
* 17809: Couldn&apos;t compile pecl extension under PHP 5.3
* 17831: Segmentation fault when the exchange doesn&apos;t exists
* 19707: AMQPQueue::get() doesn&apos;t return the message
* 19840: Connection Exception
</notes>
</release>
<release>
<version>
<release>0.1.1</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2010-08-19</date>
<notes>
Updating extension to work with new rabbitmq-c library
</notes>
</release>
<release>
<version>
<release>0.1.0</release>
<api>0.0.1</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
</stability>
<date>2010-06-19</date>
<notes>
- Initial release
</notes>
</release>
</changelog>
</package>

File Metadata

Mime Type
text/x-diff
Expires
Fri, Sep 12, 9:23 PM (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
42939
Default Alt Text
(177 KB)

Event Timeline