Add PersistenceService interface for region persistence operations
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
package com.livingworld.core.services;
|
||||||
|
|
||||||
|
import com.livingworld.regions.Region;
|
||||||
|
import com.livingworld.regions.RegionCoordinate;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service interface for region persistence operations.
|
||||||
|
*
|
||||||
|
* <p>This service handles marking regions as dirty, saving and loading regions,
|
||||||
|
* and flushing all pending changes to storage.</p>
|
||||||
|
*/
|
||||||
|
public interface PersistenceService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a region as dirty, indicating it has unsaved changes.
|
||||||
|
*
|
||||||
|
* @param region the region to mark as dirty (must not be null)
|
||||||
|
* @throws IllegalArgumentException if region is null
|
||||||
|
*/
|
||||||
|
void markRegionDirty(Region region);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves all regions that have been marked as dirty.
|
||||||
|
*/
|
||||||
|
void saveDirtyRegions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a region from storage by its coordinate.
|
||||||
|
*
|
||||||
|
* @param coordinate the region coordinate (must not be null)
|
||||||
|
* @return an Optional containing the loaded region if it exists, or empty if not found
|
||||||
|
* @throws IllegalArgumentException if coordinate is null
|
||||||
|
*/
|
||||||
|
Optional<Region> loadRegion(RegionCoordinate coordinate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves a region to storage.
|
||||||
|
*
|
||||||
|
* @param region the region to save (must not be null)
|
||||||
|
* @throws IllegalArgumentException if region is null
|
||||||
|
*/
|
||||||
|
void saveRegion(Region region);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flushes all pending changes to storage, ensuring data integrity.
|
||||||
|
*/
|
||||||
|
void flushAll();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user