pl.edu.pjwstk.yaod.store.defaultstore.persistentstore
Class PersistentBlockManager

java.lang.Object
  |
  +--pl.edu.pjwstk.yaod.store.defaultstore.persistentstore.PersistentBlockManager
Direct Known Subclasses:
BlockTesterStore

public class PersistentBlockManager
extends java.lang.Object

Klasa reprezentuje menedzer blokow, ktorego zadaniem jest wczytywanie i zapisywanie blokow w skladzie trwalych obiektow. Menedzerem blokow posluguje sie menedzer rekordow, ktory tworzony jest dla kazdego procesu uslugowego.

Author:
M. Lentner, raist@ertel.com.pl

Field Summary
static short FIRST_DATA_BLOCK
           
static short FIRST_FREE_SPACE_BLOCK
           
 
Constructor Summary
PersistentBlockManager(PersistentStore store)
          Tworzy nowy obiekt menedzera blokow.
 
Method Summary
 DataBlock findDataBlockByFreeSpace(int reqSpace)
          Wyszukuje blok danych zawierajacy wymagana ilosc wolnego miejsca.
 short getBlockSize()
          Zwraca rozmiar bloku, jaki wykorzystuje dany sklad.
 DataBlock readDataBlock(AbstractBlockID ptr)
          Wczytuje blok danych o podanym identyfikatorze.
 FreeSpaceBlock readFreeSpaceBlock(AbstractBlockID ptr)
          Wczytuje blok wolnej przestrzeni o podanym identyfikatorze.
 void updateFreeSpace(DataBlock block)
          Aktualizuje informacje o wolnej przestrzeni w podanym bloku.
 void writeBlock(AbstractBlock block)
          Zapisuje blok na dysku.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FIRST_FREE_SPACE_BLOCK

public static final short FIRST_FREE_SPACE_BLOCK

FIRST_DATA_BLOCK

public static final short FIRST_DATA_BLOCK
Constructor Detail

PersistentBlockManager

public PersistentBlockManager(PersistentStore store)
Tworzy nowy obiekt menedzera blokow.
Parameters:
store - dla jakiego skladu pracowac ma ten menedzer.
Method Detail

getBlockSize

public short getBlockSize()
Zwraca rozmiar bloku, jaki wykorzystuje dany sklad.
Returns:
rozmiar bloku.

writeBlock

public void writeBlock(AbstractBlock block)
                throws java.io.IOException
Zapisuje blok na dysku.
Parameters:
block - jaki blok zapisac.
Throws:
java.io.IOException - jesli nie mozna zapisac bloku.

updateFreeSpace

public void updateFreeSpace(DataBlock block)
                     throws java.lang.Exception
Aktualizuje informacje o wolnej przestrzeni w podanym bloku. Informacja ta zapisywana jest w bloku wolnej przestrzeni nalezacym do pliku w ktorym zapisany jest podany blok.
Parameters:
block - blok danych ktorego informacja o wolnej przestrzeni ma zostac zaktualizowana.
Throws:
java.lang.Exception - jesli wystapil blad uniemozliwiajacy aktualizacje.

readFreeSpaceBlock

public FreeSpaceBlock readFreeSpaceBlock(AbstractBlockID ptr)
                                  throws java.io.IOException,
                                         BlockFormatException
Wczytuje blok wolnej przestrzeni o podanym identyfikatorze.
Parameters:
ptr - identyfikator bloku wolnej przestrzeni.
Returns:
wczytany blok wolnej przestrzeni.
Throws:
java.io.IOException - nie mozna wczytac bloku z powodu bledu i/o.
BlockFormatException - wczytany blok jest niezgodny z formatem bloku wolnej przestrzeni (nie mozna zdeserializowac).

findDataBlockByFreeSpace

public DataBlock findDataBlockByFreeSpace(int reqSpace)
                                   throws java.lang.Exception
Wyszukuje blok danych zawierajacy wymagana ilosc wolnego miejsca.
Parameters:
reqSpace - wymagana ilosc wolnego miejsca.
Returns:
blok danych zawierajacy wymagana ilosc wolnego miejsca.
Throws:
java.lang.Exception - jesli nie mozna znalezc takiego bloku z powodu awarii.

readDataBlock

public DataBlock readDataBlock(AbstractBlockID ptr)
                        throws java.io.IOException,
                               BlockFormatException
Wczytuje blok danych o podanym identyfikatorze.
Parameters:
identyfikator - bloku do wczytania.
Returns:
wczytany blok danych.
Throws:
java.io.IOException - nie mozna wczytac bloku.
BlockFormatException - zserializowana wersja bloku nie odpowiada formatowi bloku (nie mozna zdeserializowac).