Class FlatFileStorage

java.lang.Object
ch.njol.skript.variables.VariablesStorage
ch.njol.skript.variables.FlatFileStorage
All Implemented Interfaces:
Closeable

public class FlatFileStorage extends VariablesStorage
TODO use a database (SQLite) instead and only load a limited amount of variables into RAM - e.g. 2 GB (configurable). If more variables are available they will be loaded when accessed. (rem: print a warning when Skript starts) rem: store null variables (in memory) to prevent looking up the same variables over and over again
  • Field Details

    • UTF_8

      public static final Charset UTF_8
  • Constructor Details

    • FlatFileStorage

      protected FlatFileStorage(String name)
  • Method Details

    • load_i

      protected boolean load_i(SectionNode n)
      Doesn'ts lock the connection as required by Variables.variableLoaded(String, Object, VariablesStorage).
      Specified by:
      load_i in class VariablesStorage
      Returns:
      Whether the database could be loaded successfully, i.e. whether the config is correct and all variables could be loaded
    • allLoaded

      protected void allLoaded()
      Description copied from class: VariablesStorage
      Called after all storages have been loaded, and variables have been redistributed if settings have changed. This should commit the first transaction (which is not empty if variables have been moved from another database to this one or vice versa), and start repeating transactions if applicable.
      Specified by:
      allLoaded in class VariablesStorage
    • requiresFile

      protected boolean requiresFile()
      Specified by:
      requiresFile in class VariablesStorage
    • getFile

      protected File getFile(String file)
      Specified by:
      getFile in class VariablesStorage
    • save

      protected boolean save(String name, @Nullable String type, @org.eclipse.jdt.annotation.Nullable byte[] value)
      Description copied from class: VariablesStorage
      Saves a variable. This is called from the main thread while variables are transferred between databases, and from the VariablesStorage.writeThread afterwards.
      Specified by:
      save in class VariablesStorage
      Returns:
      Whether the variable was saved
    • disconnect

      protected final void disconnect()
      Description copied from class: VariablesStorage
      Disconnects from the database.
      Specified by:
      disconnect in class VariablesStorage
    • connect

      protected final boolean connect()
      Description copied from class: VariablesStorage
      (Re)connects to the database (not called on the first connect - do this in VariablesStorage.load_i(SectionNode)).
      Specified by:
      connect in class VariablesStorage
      Returns:
      Whether the connection could be re-established. An error should be printed by this method prior to returning false.
    • close

      public void close()
      Description copied from class: VariablesStorage
      Called when Skript gets disabled. The default implementation will wait for all variables to be saved before setting VariablesStorage.closed to true and stopping the write thread, thus super.close() must be called if this method is overridden!
      Specified by:
      close in interface Closeable
      Overrides:
      close in class VariablesStorage
    • saveVariables

      public final void saveVariables(boolean finalSave)
      Completely rewrites the while file
      Parameters:
      finalSave - whether this is the last save in this session or not.