forked from p15670423/monkey
Island: Register a thread-safe IIslandEventQueue
This commit is contained in:
parent
8ee14c4564
commit
cb7add7e59
|
@ -17,7 +17,11 @@ from common.agent_event_serializers import (
|
||||||
from common.aws import AWSInstance
|
from common.aws import AWSInstance
|
||||||
from common.event_queue import IAgentEventQueue, PyPubSubAgentEventQueue
|
from common.event_queue import IAgentEventQueue, PyPubSubAgentEventQueue
|
||||||
from common.utils.file_utils import get_binary_io_sha256_hash
|
from common.utils.file_utils import get_binary_io_sha256_hash
|
||||||
from monkey_island.cc.event_queue import IIslandEventQueue, PyPubSubIslandEventQueue
|
from monkey_island.cc.event_queue import (
|
||||||
|
IIslandEventQueue,
|
||||||
|
LockingIslandEventQueueDecorator,
|
||||||
|
PyPubSubIslandEventQueue,
|
||||||
|
)
|
||||||
from monkey_island.cc.repository import (
|
from monkey_island.cc.repository import (
|
||||||
AgentBinaryRepository,
|
AgentBinaryRepository,
|
||||||
FileAgentConfigurationRepository,
|
FileAgentConfigurationRepository,
|
||||||
|
@ -72,8 +76,7 @@ def initialize_services(container: DIContainer, data_dir: Path):
|
||||||
ILockableEncryptor, RepositoryEncryptor(data_dir / REPOSITORY_KEY_FILE_NAME)
|
ILockableEncryptor, RepositoryEncryptor(data_dir / REPOSITORY_KEY_FILE_NAME)
|
||||||
)
|
)
|
||||||
container.register(Publisher, Publisher)
|
container.register(Publisher, Publisher)
|
||||||
container.register_instance(IAgentEventQueue, container.resolve(PyPubSubAgentEventQueue))
|
_register_event_queues(container)
|
||||||
container.register_instance(IIslandEventQueue, container.resolve(PyPubSubIslandEventQueue))
|
|
||||||
|
|
||||||
_setup_agent_event_serializers(container)
|
_setup_agent_event_serializers(container)
|
||||||
_register_repositories(container, data_dir)
|
_register_repositories(container, data_dir)
|
||||||
|
@ -100,6 +103,16 @@ def _register_conventions(container: DIContainer):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _register_event_queues(container: DIContainer):
|
||||||
|
container.register_instance(IAgentEventQueue, container.resolve(PyPubSubAgentEventQueue))
|
||||||
|
island_event_queue = container.resolve(PyPubSubIslandEventQueue)
|
||||||
|
container.register_instance(IIslandEventQueue, _decorate_island_event_queue(island_event_queue))
|
||||||
|
|
||||||
|
|
||||||
|
def _decorate_island_event_queue(island_event_queue: IIslandEventQueue):
|
||||||
|
return LockingIslandEventQueueDecorator(island_event_queue)
|
||||||
|
|
||||||
|
|
||||||
def _register_repositories(container: DIContainer, data_dir: Path):
|
def _register_repositories(container: DIContainer, data_dir: Path):
|
||||||
container.register_instance(
|
container.register_instance(
|
||||||
IFileRepository,
|
IFileRepository,
|
||||||
|
|
Loading…
Reference in New Issue