1: <?php
2:
3: /*
4: * This file is part of SwiftMailer.
5: * (c) 2004-2009 Chris Corbyn
6: *
7: * For the full copyright and license information, please view the LICENSE
8: * file that was distributed with this source code.
9: */
10:
11: /**
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.
15: * @package Swift
16: * @subpackage ByteStream
17: * @author Chris Corbyn
18: */
19: interface Swift_InputByteStream
20: {
21: /**
22: * Writes $bytes to the end of the stream.
23: *
24: * Writing may not happen immediately if the stream chooses to buffer. If
25: * you want to write these bytes with immediate effect, call {@link commit()}
26: * after calling write().
27: *
28: * This method returns the sequence ID of the write (i.e. 1 for first, 2 for
29: * second, etc etc).
30: *
31: * @param string $bytes
32: * @return int
33: * @throws Swift_IoException
34: */
35: public function write($bytes);
36:
37: /**
38: * For any bytes that are currently buffered inside the stream, force them
39: * off the buffer.
40: *
41: * @throws Swift_IoException
42: */
43: public function commit();
44:
45: /**
46: * Attach $is to this stream.
47: * The stream acts as an observer, receiving all data that is written.
48: * All {@link write()} and {@link flushBuffers()} operations will be mirrored.
49: *
50: * @param Swift_InputByteStream $is
51: */
52: public function bind(Swift_InputByteStream $is);
53:
54: /**
55: * Remove an already bound stream.
56: * If $is is not bound, no errors will be raised.
57: * If the stream currently has any buffered data it will be written to $is
58: * before unbinding occurs.
59: *
60: * @param Swift_InputByteStream $is
61: */
62: public function unbind(Swift_InputByteStream $is);
63:
64: /**
65: * Flush the contents of the stream (empty it) and set the internal pointer
66: * to the beginning.
67: * @throws Swift_IoException
68: */
69: public function flushBuffers();
70: }
71: