192 lines
5.6 KiB
PHP
192 lines
5.6 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Zend Framework
|
||
|
*
|
||
|
* LICENSE
|
||
|
*
|
||
|
* This source file is subject to the new BSD license that is bundled
|
||
|
* with this package in the file LICENSE.txt.
|
||
|
* It is also available through the world-wide-web at this URL:
|
||
|
* http://framework.zend.com/license/new-bsd
|
||
|
* If you did not receive a copy of the license and are unable to
|
||
|
* obtain it through the world-wide-web, please send an email
|
||
|
* to license@zend.com so we can send you a copy immediately.
|
||
|
*
|
||
|
* @category Zend
|
||
|
* @package Zend_Queue
|
||
|
* @subpackage Adapter
|
||
|
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
|
||
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||
|
* @version $Id: AdapterAbstract.php 16971 2009-07-22 18:05:45Z mikaelkael $
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @see Zend_Queue
|
||
|
*/
|
||
|
require_once 'Zend/Queue.php';
|
||
|
|
||
|
/**
|
||
|
* @see Zend_Queue_Adapter_AdapterInterface
|
||
|
*/
|
||
|
require_once 'Zend/Queue/Adapter/AdapterInterface.php';
|
||
|
|
||
|
/**
|
||
|
* Class for connecting to queues performing common operations.
|
||
|
*
|
||
|
* @category Zend
|
||
|
* @package Zend_Queue
|
||
|
* @subpackage Adapter
|
||
|
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
|
||
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||
|
*/
|
||
|
abstract class Zend_Queue_Adapter_AdapterAbstract
|
||
|
implements Zend_Queue_Adapter_AdapterInterface
|
||
|
{
|
||
|
/**
|
||
|
* Default timeout for createQueue() function
|
||
|
*/
|
||
|
const CREATE_TIMEOUT_DEFAULT = 30;
|
||
|
|
||
|
/**
|
||
|
* Default timeout for recieve() function
|
||
|
*/
|
||
|
const RECEIVE_TIMEOUT_DEFAULT = 30;
|
||
|
|
||
|
/**
|
||
|
* User-provided options
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $_options = array();
|
||
|
|
||
|
/**
|
||
|
* Internal array of queues to save on lookups
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $_queues = array();
|
||
|
|
||
|
/**
|
||
|
* Contains the Zend_Queue that this object
|
||
|
*
|
||
|
* @var Zend_Queue_Adapter_Abstract
|
||
|
*/
|
||
|
protected $_queue = null;
|
||
|
|
||
|
/**
|
||
|
* Constructor.
|
||
|
*
|
||
|
* $options is an array of key/value pairs or an instance of Zend_Config
|
||
|
* containing configuration options. These options are common to most adapters:
|
||
|
*
|
||
|
* See the Zend_Queue Adapter Notes documentation for example configurations.
|
||
|
*
|
||
|
* Some options are used on a case-by-case basis by adapters:
|
||
|
*
|
||
|
* access_key => (string) Amazon AWS Access Key
|
||
|
* secret_key => (string) Amazon AWS Secret Key
|
||
|
* dbname => (string) The name of the database to user
|
||
|
* username => (string) Connect to the database as this username.
|
||
|
* password => (string) Password associated with the username.
|
||
|
* host => (string) What host to connect to, defaults to localhost
|
||
|
* port => (string) The port of the database
|
||
|
*
|
||
|
* @param array|Zend_Config $config An array having configuration data
|
||
|
* @param Zend_Queue The Zend_Queue object that created this class
|
||
|
* @return void
|
||
|
* @throws Zend_Queue_Exception
|
||
|
*/
|
||
|
public function __construct($options, Zend_Queue $queue = null)
|
||
|
{
|
||
|
if ($options instanceof Zend_Config) {
|
||
|
$options = $options->toArray();
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Verify that adapter parameters are in an array.
|
||
|
*/
|
||
|
if (!is_array($options)) {
|
||
|
require_once 'Zend/Queue/Exception.php';
|
||
|
throw new Zend_Queue_Exception('Adapter options must be an array or Zend_Config object');
|
||
|
}
|
||
|
|
||
|
// set the queue
|
||
|
if ($queue !== null) {
|
||
|
$this->setQueue($queue);
|
||
|
}
|
||
|
|
||
|
$adapterOptions = array();
|
||
|
$driverOptions = array();
|
||
|
|
||
|
// Normalize the options and merge with the defaults
|
||
|
if (array_key_exists('options', $options)) {
|
||
|
if (!is_array($options['options'])) {
|
||
|
require_once 'Zend/Queue/Exception.php';
|
||
|
throw new Zend_Queue_Exception("Configuration array 'options' must be an array");
|
||
|
}
|
||
|
|
||
|
// Can't use array_merge() because keys might be integers
|
||
|
foreach ($options['options'] as $key => $value) {
|
||
|
$adapterOptions[$key] = $value;
|
||
|
}
|
||
|
}
|
||
|
if (array_key_exists('driverOptions', $options)) {
|
||
|
// can't use array_merge() because keys might be integers
|
||
|
foreach ((array)$options['driverOptions'] as $key => $value) {
|
||
|
$driverOptions[$key] = $value;
|
||
|
}
|
||
|
}
|
||
|
$this->_options = array_merge($this->_options, $options);
|
||
|
$this->_options['options'] = $adapterOptions;
|
||
|
$this->_options['driverOptions'] = $driverOptions;
|
||
|
}
|
||
|
|
||
|
/********************************************************************
|
||
|
* Queue management functions
|
||
|
*********************************************************************/
|
||
|
/**
|
||
|
* get the Zend_Queue class that is attached to this object
|
||
|
*
|
||
|
* @return Zend_Queue|null
|
||
|
*/
|
||
|
public function getQueue()
|
||
|
{
|
||
|
return $this->_queue;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* set the Zend_Queue class for this object
|
||
|
*
|
||
|
* @param Zend_Queue $queue
|
||
|
* @return Zend_Queue_Adapter_AdapterInterface
|
||
|
*/
|
||
|
public function setQueue(Zend_Queue $queue)
|
||
|
{
|
||
|
$this->_queue = $queue;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the configuration options in this adapter.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function getOptions()
|
||
|
{
|
||
|
return $this->_options;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Indicates if a function is supported or not.
|
||
|
*
|
||
|
* @param string $name
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public function isSupported($name)
|
||
|
{
|
||
|
$list = $this->getCapabilities();
|
||
|
|
||
|
return (isset($list[$name]) && $list[$name]);
|
||
|
}
|
||
|
}
|