nextcloud/3rdparty/aws-sdk/utilities/batchrequest.class.php

127 lines
3.4 KiB
PHP

<?php
/*
* Copyright 2010-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*%******************************************************************************************%*/
// EXCEPTIONS
/**
* Default CFBatchRequest Exception.
*/
class CFBatchRequest_Exception extends Exception {}
/*%******************************************************************************************%*/
// CLASS
/**
* Simplifies the flow involved with managing and executing a batch request queue. Batch requesting is the
* ability to queue up a series of requests and execute them all in parallel. This allows for faster
* application performance when a lot of requests are involved.
*
* @version 2011.12.02
* @license See the included NOTICE.md file for more information.
* @copyright See the included NOTICE.md file for more information.
* @link http://aws.amazon.com/php/ PHP Developer Center
*/
class CFBatchRequest extends CFRuntime
{
/**
* Stores the cURL handles that are to be processed.
*/
public $queue;
/**
* Stores the size of the request window.
*/
public $limit;
/**
* The proxy to use for connecting.
*/
public $proxy = null;
/**
* The helpers to use when connecting.
*/
public $helpers = null;
/**
* The active credential set.
*/
public $credentials;
/*%******************************************************************************************%*/
// CONSTRUCTOR
/**
* Constructs a new instance of this class.
*
* @param integer $limit (Optional) The size of the request window. Defaults to unlimited.
* @return boolean `false` if no valid values are set, otherwise `true`.
*/
public function __construct($limit = null)
{
$this->queue = array();
$this->limit = $limit ? $limit : -1;
$this->credentials = new CFCredential(array());
return $this;
}
/**
* Sets the AWS credentials to use for the batch request.
*
* @param CFCredential $credentials (Required) The credentials to use for signing and making requests.
* @return $this A reference to the current instance.
*/
public function use_credentials(CFCredential $credentials)
{
$this->credentials = $credentials;
return $this;
}
/**
* Adds a new cURL handle to the request queue.
*
* @param resource $handle (Required) A cURL resource to add to the queue.
* @return $this A reference to the current instance.
*/
public function add($handle)
{
$this->queue[] = $handle;
return $this;
}
/**
* Executes the batch request queue.
*
* @param array $opt (DO NOT USE) Enabled for compatibility with the method this overrides, although any values passed will be ignored.
* @return array An indexed array of <CFResponse> objects.
*/
public function send($opt = null)
{
$http = new $this->request_class(null, $this->proxy, null, $this->credentials);
// Make the request
$response = $http->send_multi_request($this->queue, array(
'limit' => $this->limit
));
return $response;
}
}