Skip to content

Commit

Permalink
make "stop" command selectively stop components by type
Browse files Browse the repository at this point in the history
- todo: add granularity for selectively stopping instances of electrumsv (e.g. according to an allocated handle/identifier for the wallet/process).
  • Loading branch information
AustEcon committed Aug 19, 2020
1 parent 17f86c1 commit 2849e94
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 6 deletions.
1 change: 1 addition & 0 deletions electrumsv-sdk/electrumsv_sdk/argparsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ def add_stop_argparser(self, namespaces):
stop_parser.add_argument("--ex", action="store_true", help="stop electrumx")
stop_parser.add_argument("--esv", action="store_true", help="stop electrumsv")
stop_parser.add_argument("--idx", action="store_true", help="stop indexer")
stop_parser.add_argument("--monitor", action="store_true", help="stop status monitor")
stop_parser.add_argument("--extapp", action="store_true", help="stop extension app")
return stop_parser

Expand Down
15 changes: 15 additions & 0 deletions electrumsv-sdk/electrumsv_sdk/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,21 @@ def handle_stop_args(self, parsed_args):
if not self.app_state.NAMESPACE == self.app_state.STOP:
return

if parsed_args.node:
self.app_state.stop_set.add(ComponentName.NODE)

if parsed_args.ex:
self.app_state.stop_set.add(ComponentName.ELECTRUMX)

if parsed_args.esv:
self.app_state.stop_set.add(ComponentName.ELECTRUMSV)

if parsed_args.idx:
self.app_state.stop_set.add(ComponentName.INDEXER)

if parsed_args.monitor:
self.app_state.stop_set.add(ComponentName.STATUS_MONITOR)

def handle_reset_args(self, parsed_args):
"""takes no arguments"""
if not self.app_state.NAMESPACE == self.app_state.RESET:
Expand Down
27 changes: 21 additions & 6 deletions electrumsv-sdk/electrumsv_sdk/stoppers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from electrumsv_node import electrumsv_node

from .components import ComponentType, ComponentStore
from .components import ComponentType, ComponentStore, ComponentName

logger = logging.getLogger("stoppers")

Expand All @@ -28,8 +28,23 @@ def stop_components_by_type(self, component_type: ComponentType):
subprocess.run(f"taskkill.exe /PID {component['pid']} /T /F")

def stop(self):
self.stop_components_by_type(ComponentType.NODE)
self.stop_components_by_type(ComponentType.ELECTRUMSV)
self.stop_components_by_type(ComponentType.ELECTRUMX)
self.stop_components_by_type(ComponentType.STATUS_MONITOR)
print("stack terminated")
"""if stop_set is empty, all processes terminate."""
# todo: make this granular enough to pick out instances of each component type

if ComponentName.NODE in self.app_state.stop_set or self.app_state.stop_set is None:
self.stop_components_by_type(ComponentType.NODE)

if ComponentName.ELECTRUMSV in self.app_state.stop_set or self.app_state.stop_set is None:
self.stop_components_by_type(ComponentType.ELECTRUMSV)

if ComponentName.ELECTRUMX in self.app_state.stop_set or self.app_state.stop_set is None:
self.stop_components_by_type(ComponentType.ELECTRUMX)

if ComponentName.INDEXER in self.app_state.stop_set or self.app_state.stop_set is None:
self.stop_components_by_type(ComponentType.INDEXER)

if ComponentName.STATUS_MONITOR in self.app_state.stop_set \
or self.app_state.stop_set is None:
self.stop_components_by_type(ComponentType.STATUS_MONITOR)

logger.info(f"terminated: {self.app_state.stop_set}")

0 comments on commit 2849e94

Please sign in to comment.