Source for file Stream.php
Documentation is available at Stream.php
* Copyright (c) 2009, RealDolmen
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of RealDolmen nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY RealDolmen ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL RealDolmen BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* @package Microsoft_WindowsAzure_Storage
* @copyright Copyright (c) 2009, RealDolmen (http://www.realdolmen.com)
* @license http://todo name_todo
* @version $Id: Blob.php 24511 2009-07-28 09:17:56Z unknown $
* @see Microsoft_WindowsAzure_Storage_Blob
require_once 'Microsoft/WindowsAzure/Storage/Blob.php';
* @see Microsoft_WindowsAzure_Exception
require_once 'Microsoft/WindowsAzure/Exception.php';
* @package Microsoft_WindowsAzure_Storage
* @copyright Copyright (c) 2009, RealDolmen (http://www.realdolmen.com)
* @license http://phpazure.codeplex.com/license
private $_fileName = null;
private $_temporaryFileName = null;
private $_temporaryFileHandle = null;
* @var Microsoft_WindowsAzure_Storage_Blob
private $_storageClient = null;
private $_writeMode = false;
* Retrieve storage client for this stream type
* @return Microsoft_WindowsAzure_Storage_Blob
if (is_null($this->_storageClient))
if (!$this->_storageClient)
return $this->_storageClient;
$fileName = isset ($url['path']) ? $url['path'] : $url['host'];
if (strpos($fileName, '/') === 0)
$fileName = substr($fileName, 1);
* @param integer $options
* @param string $opened_path
public function stream_open($path, $mode, $options, $opened_path)
$this->_fileName = $path;
// Check the file can be opened
$fh = @fopen($this->_temporaryFileName, $mode);
$this->_writeMode = true;
$this->_writeMode = false;
// If read/append, fetch the file
if (!$this->_writeMode || strpbrk($mode, 'ra+'))
$this->_temporaryFileName
// Open temporary file handle
$this->_temporaryFileHandle = fopen($this->_temporaryFileName, $mode);
@fclose($this->_temporaryFileHandle);
// Make sure the container exists
$this->_temporaryFileName
@unlink($this->_temporaryFileName);
unset ($this->_storageClient);
@unlink($this->_temporaryFileName);
unset ($this->_storageClient);
if (!$this->_temporaryFileHandle)
return fread($this->_temporaryFileHandle, $count);
if (!$this->_temporaryFileHandle)
fwrite($this->_temporaryFileHandle, $data, $len);
if (!$this->_temporaryFileHandle)
return feof($this->_temporaryFileHandle);
* What is the current read/write position of the stream?
return ftell($this->_temporaryFileHandle);
* Update the read/write position of the stream
if (!$this->_temporaryFileHandle)
return (fseek($this->_temporaryFileHandle, $offset, $whence) === 0);
* Flush current cached stream data to storage
$result = fflush($this->_temporaryFileHandle);
// Make sure the container exists
$this->_temporaryFileName
@unlink($this->_temporaryFileName);
unset ($this->_storageClient);
* Returns data array of stream variables
if (!$this->_temporaryFileHandle)
$stat['size'] = $info->Size;
* Attempt to delete the item
* Attempt to rename the item
* @param string $path_from
public function rename($path_from, $path_to)
* Return array of URL variables
$stat['size'] = $info->Size;
* @param integer $options
public function mkdir($path, $mode, $options)
* @param integer $options
public function rmdir($path, $options)
* Attempt to open a directory
* @param integer $options
* Return the next filename in the directory
* Reset the directory pointer
|