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()) временно блокирует буфер для записи данных в конец буфера.
Операции чтения (read()) выставляют флаг ожидания waitData и будет ждать появления данных в буфере, переодично опрашивая содержимое буфера.
Данные буфера чиаются с начала, и прочитанные данные удаляются из буфера.
Операции записи (write()) временно блокирует буфер для записи данных в конец буфера.
- Author:
- nt.gocha@gmail.com
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringBuilderbufferprotected java.lang.ObjectbufferLockprotected java.util.Randomrndprotected java.util.concurrent.atomic.AtomicBooleanwaitDataprotected java.io.Writerwriter -
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 voidclose()Закрывает буферjava.io.WritercreateWriter()java.lang.StringBuildergetBuffer()Буферjava.lang.ObjectgetBufferLock()Объект для блокировки чтения/записи содержимого буфераjava.lang.StringgetBufferText()Синхронно читает содержимое буфераjava.io.WritergetWriter()booleanisWaitData()Возвращает флаг ожидания данных в буфере, т.е. в данный момент выполняется операция read()intread(char[] cbuf, int off, int len)Синхронно читает данные из буфераvoidwrite(java.lang.String txt)Синхронно записывает данные в конец буфера
-
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:
readin classjava.io.Reader- Parameters:
cbuf- приемникoff- смещениеlen- длинна- Returns:
- сколько прочитано
- Throws:
java.io.IOException- ошибка чтения
-
close
public void close() throws java.io.IOExceptionЗакрывает буфер- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein classjava.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()
-