Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1429257
BufferStream.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
BufferStream.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
GuzzleHttp\Psr7
;
use
Psr\Http\Message\StreamInterface
;
/**
* Provides a buffer stream that can be written to to fill a buffer, and read
* from to remove bytes from the buffer.
*
* This stream returns a "hwm" metadata value that tells upstream consumers
* what the configured high water mark of the stream is, or the maximum
* preferred size of the buffer.
*/
final
class
BufferStream
implements
StreamInterface
{
/** @var int */
private
$hwm
;
/** @var string */
private
$buffer
=
''
;
/**
* @param int $hwm High water mark, representing the preferred maximum
* buffer size. If the size of the buffer exceeds the high
* water mark, then calls to write will continue to succeed
* but will return 0 to inform writers to slow down
* until the buffer has been drained by reading from it.
*/
public
function
__construct
(
int
$hwm
=
16384
)
{
$this
->
hwm
=
$hwm
;
}
public
function
__toString
():
string
{
return
$this
->
getContents
();
}
public
function
getContents
():
string
{
$buffer
=
$this
->
buffer
;
$this
->
buffer
=
''
;
return
$buffer
;
}
public
function
close
():
void
{
$this
->
buffer
=
''
;
}
public
function
detach
()
{
$this
->
close
();
return
null
;
}
public
function
getSize
():
?
int
{
return
strlen
(
$this
->
buffer
);
}
public
function
isReadable
():
bool
{
return
true
;
}
public
function
isWritable
():
bool
{
return
true
;
}
public
function
isSeekable
():
bool
{
return
false
;
}
public
function
rewind
():
void
{
$this
->
seek
(
0
);
}
public
function
seek
(
$offset
,
$whence
=
SEEK_SET
):
void
{
throw
new
\RuntimeException
(
'Cannot seek a BufferStream'
);
}
public
function
eof
():
bool
{
return
strlen
(
$this
->
buffer
)
===
0
;
}
public
function
tell
():
int
{
throw
new
\RuntimeException
(
'Cannot determine the position of a BufferStream'
);
}
/**
* Reads data from the buffer.
*/
public
function
read
(
$length
):
string
{
$currentLength
=
strlen
(
$this
->
buffer
);
if
(
$length
>=
$currentLength
)
{
// No need to slice the buffer because we don't have enough data.
$result
=
$this
->
buffer
;
$this
->
buffer
=
''
;
}
else
{
// Slice up the result to provide a subset of the buffer.
$result
=
substr
(
$this
->
buffer
,
0
,
$length
);
$this
->
buffer
=
substr
(
$this
->
buffer
,
$length
);
}
return
$result
;
}
/**
* Writes data to the buffer.
*/
public
function
write
(
$string
):
int
{
$this
->
buffer
.=
$string
;
if
(
strlen
(
$this
->
buffer
)
>=
$this
->
hwm
)
{
return
0
;
}
return
strlen
(
$string
);
}
/**
* @return mixed
*/
public
function
getMetadata
(
$key
=
null
)
{
if
(
$key
===
'hwm'
)
{
return
$this
->
hwm
;
}
return
$key
?
null
:
[];
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 17:20 (9 h, 47 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
9b/cb/e3fa1f2f8b8324b0546289b91386
Default Alt Text
BufferStream.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment