4 * This file is part of SwiftMailer.
5 * (c) 2004-2009 Chris Corbyn
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
12 * An abstract means of writing data.
13 * Classes implementing this interface may use a subsystem which requires less
14 * memory than working with large strings of data.
16 * @subpackage ByteStream
17 * @author Chris Corbyn
19 interface Swift_InputByteStream
23 * Writes $bytes to the end of the stream.
25 * Writing may not happen immediately if the stream chooses to buffer. If
26 * you want to write these bytes with immediate effect, call {@link commit()}
27 * after calling write().
29 * This method returns the sequence ID of the write (i.e. 1 for first, 2 for
32 * @param string $bytes
34 * @throws Swift_IoException
36 public function write($bytes);
39 * For any bytes that are currently buffered inside the stream, force them
42 * @throws Swift_IoException
44 public function commit();
47 * Attach $is to this stream.
48 * The stream acts as an observer, receiving all data that is written.
49 * All {@link write()} and {@link flushBuffers()} operations will be mirrored.
51 * @param Swift_InputByteStream $is
53 public function bind(Swift_InputByteStream
$is);
56 * Remove an already bound stream.
57 * If $is is not bound, no errors will be raised.
58 * If the stream currently has any buffered data it will be written to $is
59 * before unbinding occurs.
61 * @param Swift_InputByteStream $is
63 public function unbind(Swift_InputByteStream
$is);
66 * Flush the contents of the stream (empty it) and set the internal pointer
68 * @throws Swift_IoException
70 public function flushBuffers();