Island: Add FileRepositoryLockingDecorator
This commit is contained in:
parent
bc0c4a1c8e
commit
e3b5e0c01a
|
@ -1,6 +1,7 @@
|
||||||
from .errors import RemovalError, RetrievalError, StorageError
|
from .errors import RemovalError, RetrievalError, StorageError
|
||||||
from .i_file_repository import FileNotFoundError, IFileRepository
|
from .i_file_repository import FileNotFoundError, IFileRepository
|
||||||
from .local_storage_file_repository import LocalStorageFileRepository
|
from .local_storage_file_repository import LocalStorageFileRepository
|
||||||
|
from .file_repository_locking_decorator import FileRepositoryLockingDecorator
|
||||||
from .file_repository_logging_decorator import FileRepositoryLoggingDecorator
|
from .file_repository_logging_decorator import FileRepositoryLoggingDecorator
|
||||||
from .i_agent_binary_repository import IAgentBinaryRepository
|
from .i_agent_binary_repository import IAgentBinaryRepository
|
||||||
from .agent_binary_repository import AgentBinaryRepository
|
from .agent_binary_repository import AgentBinaryRepository
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
from multiprocessing import Lock
|
||||||
|
from typing import BinaryIO
|
||||||
|
|
||||||
|
from . import IFileRepository
|
||||||
|
|
||||||
|
|
||||||
|
class FileRepositoryLockingDecorator(IFileRepository):
|
||||||
|
def __init__(self, file_repository: IFileRepository):
|
||||||
|
self._file_repository = file_repository
|
||||||
|
self._lock = Lock()
|
||||||
|
|
||||||
|
def save_file(self, unsafe_file_name: str, file_contents: BinaryIO):
|
||||||
|
with self._lock:
|
||||||
|
return self._file_repository.save_file(unsafe_file_name, file_contents)
|
||||||
|
|
||||||
|
def open_file(self, unsafe_file_name: str) -> BinaryIO:
|
||||||
|
with self._lock:
|
||||||
|
return self._file_repository.open_file(unsafe_file_name)
|
||||||
|
|
||||||
|
def delete_file(self, unsafe_file_name: str):
|
||||||
|
with self._lock:
|
||||||
|
return self._file_repository.delete_file(unsafe_file_name)
|
||||||
|
|
||||||
|
def delete_all_files(self):
|
||||||
|
with self._lock:
|
||||||
|
return self._file_repository.delete_all_files()
|
Loading…
Reference in New Issue