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
4 changes: 2 additions & 2 deletions examples/cameraDiscoveryExample.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ def main() -> None:
shutdown_event = setup_shutdown()

# Define the group to discover camera services on
group = Group(name='effectiverange/sniper', url='udp://239.0.1.1:5555')
group = Group(name='effective-range/sniper', url='udp://239.0.1.1:5555')

# Define the query to discover matching camera services
query = ServiceQuery(name_filter='.+', role_filter='camera')
query = ServiceQuery(name='.+', role='camera')

# Use a discoverer to find camera services
with Hello.builder().discoverer().default() as discoverer:
Expand Down
2 changes: 1 addition & 1 deletion examples/cameraServiceExample.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def main() -> None:
shutdown_event = setup_shutdown()

# Define the group to advertise the camera service on
group = Group(name='effectiverange/sniper', url='udp://239.0.1.1:5555')
group = Group(name='effective-range/sniper', url='udp://239.0.1.1:5555')

# Define the service information for the camera
info = ServiceInfo(uuid=uuid4(), name='er-sniper-camera-1', role='camera', urls={
Expand Down
9 changes: 4 additions & 5 deletions hello/advertizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from common_utility import IReusableTimer
from context_logger import get_logger

from hello import ServiceInfo, Group, Sender, Receiver, ServiceMatcher, ServiceQuery, DefaultScheduler
from hello import ServiceInfo, Group, Sender, Receiver, ServiceMatcher, ServiceQuery, AbstractScheduler

log = get_logger('Advertizer')

Expand Down Expand Up @@ -49,10 +49,9 @@ def stop(self) -> None:
self._sender.stop()

def advertise(self, info: ServiceInfo | None = None) -> None:
if info:
self._info = info

if self._group:
if info:
self._info = info
if self._info:
self._sender.send(self._info)
log.info('Service advertised', service=self._info, group=self._group)
Expand Down Expand Up @@ -97,7 +96,7 @@ def _handle_query(self, matcher: ServiceMatcher, info: ServiceInfo) -> None:
self.advertise(info)


class ScheduledAdvertizer(DefaultScheduler[ServiceInfo], Advertizer):
class ScheduledAdvertizer(AbstractScheduler[ServiceInfo], Advertizer):

def __init__(self, advertizer: Advertizer, timer: IReusableTimer) -> None:
super().__init__(timer)
Expand Down
9 changes: 4 additions & 5 deletions hello/discoverer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from common_utility import IReusableTimer
from context_logger import get_logger

from hello import Group, ServiceQuery, Sender, Receiver, ServiceInfo, ServiceMatcher, DefaultScheduler
from hello import Group, ServiceQuery, Sender, Receiver, ServiceInfo, ServiceMatcher, AbstractScheduler

log = get_logger('Discoverer')

Expand Down Expand Up @@ -87,10 +87,9 @@ def stop(self) -> None:
self._receiver.stop()

def discover(self, query: ServiceQuery | None = None) -> None:
if query:
self._matcher = ServiceMatcher(query)

if self._group:
if query:
self._matcher = ServiceMatcher(query)
if self._matcher:
self._sender.send(self._matcher.query)
log.info('Service discovery initiated', group=self._group, query=self._matcher.query)
Expand Down Expand Up @@ -150,7 +149,7 @@ def _execute_handler(self, handler: OnDiscoveryEvent, event: DiscoveryEvent) ->
log.warn('Error in event handler execution', event=event, error=error)


class ScheduledDiscoverer(DefaultScheduler[ServiceQuery], Discoverer):
class ScheduledDiscoverer(AbstractScheduler[ServiceQuery], Discoverer):

def __init__(self, discoverer: Discoverer, timer: IReusableTimer) -> None:
super().__init__(timer)
Expand Down
12 changes: 6 additions & 6 deletions hello/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@

class Scheduler(Generic[T]):

def stop(self) -> None:
def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool = False) -> None:
raise NotImplementedError()

def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool = False) -> None:
def stop(self) -> None:
raise NotImplementedError()


class DefaultScheduler(Scheduler[T]):
class AbstractScheduler(Scheduler[T]):

def __init__(self, timer: IReusableTimer) -> None:
self._timer = timer
Expand All @@ -32,9 +32,6 @@ def __enter__(self) -> Scheduler[T]:
def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
self.stop()

def stop(self) -> None:
self._timer.cancel()

def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool = False) -> None:
if one_shot:
self._timer.start(interval, self._execute, [data])
Expand All @@ -43,6 +40,9 @@ def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool =
self._timer.start(interval, self._execute_and_restart, [data])
log.info('Periodic execution scheduled', data=data, interval=interval)

def stop(self) -> None:
self._timer.cancel()

def _execute(self, data: T | None = None) -> None:
raise NotImplementedError()

Expand Down
8 changes: 4 additions & 4 deletions hello/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ def to_dict(self) -> dict[str, Any]:

@dataclass
class ServiceQuery(object):
name_filter: str
role_filter: str
name: str
role: str


class ServiceMatcher(object):

def __init__(self, query: ServiceQuery) -> None:
self.query = query
self._name_matcher = re.compile(self.query.name_filter)
self._role_matcher = re.compile(self.query.role_filter)
self._name_matcher = re.compile(self.query.name)
self._role_matcher = re.compile(self.query.role)

def matches(self, info: ServiceInfo) -> bool:
name_match = self._name_matcher.match(info.name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
from common_utility import IReusableTimer
from context_logger import setup_logging

from hello import DefaultScheduler
from hello import AbstractScheduler


class DefaultSchedulerDiscovererTest(TestCase):
class AbstractSchedulerTest(TestCase):

@classmethod
def setUpClass(cls):
Expand Down Expand Up @@ -77,7 +77,7 @@ def test_execute_and_restart_restarts_timer(self):
timer.restart.assert_called_once()


class TestScheduler(DefaultScheduler[Any]):
class TestScheduler(AbstractScheduler[Any]):

def __init__(self, timer: IReusableTimer) -> None:
super().__init__(timer)
Expand Down
Loading