InputByteStream.php 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /*
  3. * This file is part of SwiftMailer.
  4. * (c) 2004-2009 Chris Corbyn
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. /**
  10. * An abstract means of writing data.
  11. *
  12. * Classes implementing this interface may use a subsystem which requires less
  13. * memory than working with large strings of data.
  14. *
  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. *
  33. * @return integer
  34. *
  35. * @throws Swift_IoException
  36. */
  37. public function write($bytes);
  38. /**
  39. * For any bytes that are currently buffered inside the stream, force them
  40. * off the buffer.
  41. *
  42. * @throws Swift_IoException
  43. */
  44. public function commit();
  45. /**
  46. * Attach $is to this stream.
  47. *
  48. * The stream acts as an observer, receiving all data that is written.
  49. * All {@link write()} and {@link flushBuffers()} operations will be mirrored.
  50. *
  51. * @param Swift_InputByteStream $is
  52. */
  53. public function bind(Swift_InputByteStream $is);
  54. /**
  55. * Remove an already bound stream.
  56. *
  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.
  60. *
  61. * @param Swift_InputByteStream $is
  62. */
  63. public function unbind(Swift_InputByteStream $is);
  64. /**
  65. * Flush the contents of the stream (empty it) and set the internal pointer
  66. * to the beginning.
  67. *
  68. * @throws Swift_IoException
  69. */
  70. public function flushBuffers();
  71. }