Package xyz.cofe.text

Class TextBuffer

java.lang.Object
java.io.Reader
xyz.cofe.text.TextBuffer
All Implemented Interfaces:
java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable

public class TextBuffer
extends java.io.Reader
Синхронный текстовый буфер для потоковых операций: Reader / Writer.

Операции чтения (read()) выставляют флаг ожидания waitData и будет ждать появления данных в буфере, переодично опрашивая содержимое буфера.
Данные буфера чиаются с начала, и прочитанные данные удаляются из буфера.

Операции записи (write()) временно блокирует буфер для записи данных в конец буфера.
Author:
nt.gocha@gmail.com
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.lang.StringBuilder buffer  
    protected java.lang.Object bufferLock  
    protected java.util.Random rnd  
    protected java.util.concurrent.atomic.AtomicBoolean waitData  
    protected java.io.Writer writer  

    Fields inherited from class java.io.Reader

    lock
  • Constructor Summary

    Constructors 
    Constructor Description
    TextBuffer()  
    TextBuffer​(java.lang.StringBuilder buffer)  
    TextBuffer​(java.lang.StringBuilder buffer, java.lang.Object bufferLock)  
  • Method Summary

    Modifier and Type Method Description
    void close()
    Закрывает буфер
    java.io.Writer createWriter()  
    java.lang.StringBuilder getBuffer()
    Буфер
    java.lang.Object getBufferLock()
    Объект для блокировки чтения/записи содержимого буфера
    java.lang.String getBufferText()
    Синхронно читает содержимое буфера
    java.io.Writer getWriter()  
    boolean isWaitData()
    Возвращает флаг ожидания данных в буфере, т.е. в данный момент выполняется операция read()
    int read​(char[] cbuf, int off, int len)
    Синхронно читает данные из буфера
    void write​(java.lang.String txt)
    Синхронно записывает данные в конец буфера

    Methods inherited from class java.io.Reader

    mark, markSupported, nullReader, read, read, read, ready, reset, skip, transferTo

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • buffer

      protected java.lang.StringBuilder buffer
    • rnd

      protected final java.util.Random rnd
    • bufferLock

      protected final java.lang.Object bufferLock
    • waitData

      protected final java.util.concurrent.atomic.AtomicBoolean waitData
    • writer

      protected volatile java.io.Writer writer
  • Constructor Details

    • TextBuffer

      public TextBuffer​(java.lang.StringBuilder buffer)
    • TextBuffer

      public TextBuffer​(java.lang.StringBuilder buffer, java.lang.Object bufferLock)
    • TextBuffer

      public TextBuffer()
  • Method Details

    • getBuffer

      public java.lang.StringBuilder getBuffer()
      Буфер
      Returns:
      буфер
    • getBufferLock

      public java.lang.Object getBufferLock()
      Объект для блокировки чтения/записи содержимого буфера
      Returns:
      объект блокировки
    • getBufferText

      public java.lang.String getBufferText()
      Синхронно читает содержимое буфера
      Returns:
      содержимое буфера
    • isWaitData

      public boolean isWaitData()
      Возвращает флаг ожидания данных в буфере, т.е. в данный момент выполняется операция read()
      Returns:
      флаг ожидания данных
    • read

      public int read​(char[] cbuf, int off, int len) throws java.io.IOException
      Синхронно читает данные из буфера
      Specified by:
      read in class java.io.Reader
      Parameters:
      cbuf - приемник
      off - смещение
      len - длинна
      Returns:
      сколько прочитано
      Throws:
      java.io.IOException - ошибка чтения
    • close

      public void close() throws java.io.IOException
      Закрывает буфер
      Specified by:
      close in interface java.lang.AutoCloseable
      Specified by:
      close in interface java.io.Closeable
      Specified by:
      close in class java.io.Reader
      Throws:
      java.io.IOException - Ошибка IO
    • write

      public void write​(java.lang.String txt)
      Синхронно записывает данные в конец буфера
      Parameters:
      txt - данные
    • createWriter

      public java.io.Writer createWriter()
    • getWriter

      public java.io.Writer getWriter()