Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions hathor/cli/events_simulator/events_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@

from argparse import ArgumentParser, Namespace

from hathor.cli.events_simulator.scenario import Scenario

DEFAULT_PORT = 8080


def create_parser() -> ArgumentParser:
from hathor.cli.events_simulator.scenario import Scenario
from hathor.cli.util import create_parser

parser = create_parser()
Expand Down
9 changes: 9 additions & 0 deletions hathor/event/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class EventManager:
"""

_peer_id: str
_is_running: bool = False
_load_finished: bool = False

@property
Expand Down Expand Up @@ -83,11 +84,17 @@ def __init__(
self._subscribe_events()

def start(self, peer_id: str) -> None:
assert self._is_running is False, 'Cannot start, EventManager is already running'

self._peer_id = peer_id
self._event_ws_factory.start()
self._is_running = True

def stop(self):
assert self._is_running is True, 'Cannot stop, EventManager is not running'

self._event_ws_factory.stop()
self._is_running = False

def _assert_closed_event_group(self):
# XXX: we must check that the last event either does not belong to an event group or that it just closed an
Expand All @@ -110,6 +117,8 @@ def _subscribe_events(self):
self._pubsub.subscribe(event, self._handle_event)

def _handle_event(self, event_type: HathorEvents, event_args: EventArguments) -> None:
assert self._is_running, 'Cannot handle event, EventManager is not started.'

event_type = _EVENT_CONVERTERS.get(event_type, event_type)
event_specific_handlers = {
HathorEvents.LOAD_FINISHED: self._handle_load_finished
Expand Down
4 changes: 4 additions & 0 deletions hathor/event/websocket/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,14 @@ def __init__(self, reactor: Reactor, event_storage: EventStorage):

def start(self):
"""Start the WebSocket server. Required to be able to send events."""
assert self._is_running is False, 'Cannot start, EventWebsocketFactory is already running'

self._is_running = True

def stop(self):
"""Stop the WebSocket server. No events can be sent."""
assert self._is_running is True, 'Cannot stop, EventWebsocketFactory is not running'

self._is_running = False

for connection in self._connections:
Expand Down
6 changes: 3 additions & 3 deletions hathor/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,9 @@ def start(self) -> None:
)
sys.exit(-1)

if self._event_manager:
self._event_manager.start(not_none(self.my_peer.id))

self.state = self.NodeState.INITIALIZING
self.pubsub.publish(HathorEvents.MANAGER_ON_START)
self.connections.start()
Expand Down Expand Up @@ -305,9 +308,6 @@ def start(self) -> None:
if self.stratum_factory:
self.stratum_factory.start()

if self._event_manager:
self._event_manager.start(not_none(self.my_peer.id))

# Start running
self.tx_storage.start_running_manager()

Expand Down