Class RAFBuffer

java.lang.Object
xyz.cofe.cbuffer.RAFBuffer
All Implemented Interfaces:
ContentBuffer
Direct Known Subclasses:
FileLockBuffer

public class RAFBuffer
extends java.lang.Object
implements ContentBuffer
Author:
Kamnev Georgiy (nt.gocha@gmail.com)
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected boolean cloneRafContent  
    protected boolean closeRaf  
    protected boolean deleteTempOnExit  
    protected boolean flushOnClose  
    protected java.util.concurrent.locks.Lock lock  
    protected java.io.RandomAccessFile raf  
    protected boolean releaseRaf  
    protected boolean throwNotSetRaf  
  • Constructor Summary

    Constructors 
    Constructor Description
    RAFBuffer()  
    RAFBuffer​(java.util.concurrent.locks.Lock lock)  
    RAFBuffer​(RAFBuffer src)  
    RAFBuffer​(RAFBuffer src, java.util.concurrent.locks.Lock lock)  
  • Method Summary

    Modifier and Type Method Description
    void clear()
    Очистка буфера, устанавливает размер в ноль
    RAFBuffer clone()  
    void close()
    Закрытие буфера
    protected java.io.File createTempFile()  
    protected java.io.RandomAccessFile createTempRAF()  
    void flush()
    Запись содержимого на диск/память
    byte[] get​(long offset, int dataLen)
    Получение байтов.
    java.util.concurrent.locks.Lock getLock()  
    java.io.RandomAccessFile getRaf()  
    long getSize()
    Возвращает размер буфера в байтах
    boolean isCloneRafContent()
    Указывает клонировать во временный файл содержимое буфера
    boolean isCloseRaf()
    Указывает закрывать RandomAccessFile при вызове close.
    boolean isDeleteTempOnExit()
    Указывает удалять временно клонированный файл при выходе
    boolean isFlushOnClose()
    Указывает сбрасывать содержимое памяти на диск при закрытии
    boolean isReleaseRaf()
    Указывает освобаждать ссылку (устанавливать свойство raf в null) на RandomAccessFile
    boolean isThrowNotSetRaf()  
    void set​(long offset, byte[] data, int dataOffset, int dataLen)
    Установить байты в массиве.
    void setCloneRafContent​(boolean cloneRafContent)
    Указывает клонировать во временный файл содержимое буфера
    void setCloseRaf​(boolean closeRaf)
    Указывает закрывать RandomAccessFile при вызове close.
    void setDeleteTempOnExit​(boolean deleteTempOnExit)
    Указывает удалять временно клонированный файл при выходе
    void setFlushOnClose​(boolean flushOnClose)
    Указывает сбрасывать содержимое памяти на диск при закрытии
    void setRaf​(java.io.RandomAccessFile raf)  
    void setReleaseRaf​(boolean releaseRaf)
    Указывает освобаждать ссылку (устанавливать свойство raf в null) на RandomAccessFile
    void setSize​(long size)
    Устанавливает размер буфера
    void setThrowNotSetRaf​(boolean throwNotSetRaf)  

    Methods inherited from class java.lang.Object

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

  • Constructor Details

  • Method Details

    • isCloneRafContent

      public boolean isCloneRafContent()
      Указывает клонировать во временный файл содержимое буфера
      Returns:
      true (по умолчанию) - клонировать
    • setCloneRafContent

      public void setCloneRafContent​(boolean cloneRafContent)
      Указывает клонировать во временный файл содержимое буфера
      Parameters:
      cloneRafContent - true (по умолчанию) - клонировать
    • getLock

      public java.util.concurrent.locks.Lock getLock()
    • getRaf

      public java.io.RandomAccessFile getRaf()
    • setRaf

      public void setRaf​(java.io.RandomAccessFile raf)
    • isThrowNotSetRaf

      public boolean isThrowNotSetRaf()
    • setThrowNotSetRaf

      public void setThrowNotSetRaf​(boolean throwNotSetRaf)
    • getSize

      public long getSize()
      Description copied from interface: ContentBuffer
      Возвращает размер буфера в байтах
      Specified by:
      getSize in interface ContentBuffer
      Returns:
      кол-во байт в буфере
    • setSize

      public void setSize​(long size)
      Description copied from interface: ContentBuffer
      Устанавливает размер буфера
      Specified by:
      setSize in interface ContentBuffer
      Parameters:
      size - кол-во байт в буфере
    • set

      public void set​(long offset, byte[] data, int dataOffset, int dataLen)
      Description copied from interface: ContentBuffer
      Установить байты в массиве.

      По возможности, массив должен быть расширен до необходимого размера, инче должно быть сгененировано исключение

      Specified by:
      set in interface ContentBuffer
      Parameters:
      offset - смещение в буфере от нуля
      data - массив байтов
      dataOffset - смещение в массиве байтов
      dataLen - кол-во добавляемых байтов из массива
    • get

      public byte[] get​(long offset, int dataLen)
      Description copied from interface: ContentBuffer
      Получение байтов.

      Если данные в заданном диапазоне отсуствуют - то должыен быть ввозвращает пустой массив.
      Если данные присуствуют в ограниченном размере - то данные, то возвращается массив длинной имеющимся данным.

      Specified by:
      get in interface ContentBuffer
      Parameters:
      offset - смещение (от нуля)
      dataLen - кол-во байтов
      Returns:
      байты
    • clear

      public void clear()
      Description copied from interface: ContentBuffer
      Очистка буфера, устанавливает размер в ноль
      Specified by:
      clear in interface ContentBuffer
    • isDeleteTempOnExit

      public boolean isDeleteTempOnExit()
      Указывает удалять временно клонированный файл при выходе
      Returns:
      true (по умолчанию) - удалять клонированный файл
    • setDeleteTempOnExit

      public void setDeleteTempOnExit​(boolean deleteTempOnExit)
      Указывает удалять временно клонированный файл при выходе
      Parameters:
      deleteTempOnExit - true (по умолчанию) - удалять клонированный файл
    • createTempFile

      protected java.io.File createTempFile()
    • createTempRAF

      protected java.io.RandomAccessFile createTempRAF()
    • clone

      public RAFBuffer clone()
      Overrides:
      clone in class java.lang.Object
    • flush

      public void flush()
      Description copied from interface: ContentBuffer
      Запись содержимого на диск/память
      Specified by:
      flush in interface ContentBuffer
    • isFlushOnClose

      public boolean isFlushOnClose()
      Указывает сбрасывать содержимое памяти на диск при закрытии
      Returns:
      true (по умолчанию) - сбрасывать.
    • setFlushOnClose

      public void setFlushOnClose​(boolean flushOnClose)
      Указывает сбрасывать содержимое памяти на диск при закрытии
      Parameters:
      flushOnClose - true (по умолчанию) - сбрасывать.
    • isCloseRaf

      public boolean isCloseRaf()
      Указывает закрывать RandomAccessFile при вызове close.
      Returns:
      true (по умолчанию) - закрывать.
    • setCloseRaf

      public void setCloseRaf​(boolean closeRaf)
      Указывает закрывать RandomAccessFile при вызове close.
      Parameters:
      closeRaf - true (по умолчанию) - закрывать.
    • isReleaseRaf

      public boolean isReleaseRaf()
      Указывает освобаждать ссылку (устанавливать свойство raf в null) на RandomAccessFile
      Returns:
      true (по умолчанию) - освобождать.
    • setReleaseRaf

      public void setReleaseRaf​(boolean releaseRaf)
      Указывает освобаждать ссылку (устанавливать свойство raf в null) на RandomAccessFile
      Parameters:
      releaseRaf - true (по умолчанию) - освобождать.
    • close

      public void close()
      Description copied from interface: ContentBuffer
      Закрытие буфера
      Specified by:
      close in interface ContentBuffer