Skip to content

Commit 6392bb0

Browse files
Update service query format, cleanup (#10)
1 parent dac6c95 commit 6392bb0

7 files changed

Lines changed: 24 additions & 26 deletions

File tree

examples/cameraDiscoveryExample.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ def main() -> None:
1212
shutdown_event = setup_shutdown()
1313

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

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

2020
# Use a discoverer to find camera services
2121
with Hello.builder().discoverer().default() as discoverer:

examples/cameraServiceExample.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def main() -> None:
1414
shutdown_event = setup_shutdown()
1515

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

1919
# Define the service information for the camera
2020
info = ServiceInfo(uuid=uuid4(), name='er-sniper-camera-1', role='camera', urls={

hello/advertizer.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from common_utility import IReusableTimer
1010
from context_logger import get_logger
1111

12-
from hello import ServiceInfo, Group, Sender, Receiver, ServiceMatcher, ServiceQuery, DefaultScheduler
12+
from hello import ServiceInfo, Group, Sender, Receiver, ServiceMatcher, ServiceQuery, AbstractScheduler
1313

1414
log = get_logger('Advertizer')
1515

@@ -49,10 +49,9 @@ def stop(self) -> None:
4949
self._sender.stop()
5050

5151
def advertise(self, info: ServiceInfo | None = None) -> None:
52-
if info:
53-
self._info = info
54-
5552
if self._group:
53+
if info:
54+
self._info = info
5655
if self._info:
5756
self._sender.send(self._info)
5857
log.info('Service advertised', service=self._info, group=self._group)
@@ -97,7 +96,7 @@ def _handle_query(self, matcher: ServiceMatcher, info: ServiceInfo) -> None:
9796
self.advertise(info)
9897

9998

100-
class ScheduledAdvertizer(DefaultScheduler[ServiceInfo], Advertizer):
99+
class ScheduledAdvertizer(AbstractScheduler[ServiceInfo], Advertizer):
101100

102101
def __init__(self, advertizer: Advertizer, timer: IReusableTimer) -> None:
103102
super().__init__(timer)

hello/discoverer.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from common_utility import IReusableTimer
1212
from context_logger import get_logger
1313

14-
from hello import Group, ServiceQuery, Sender, Receiver, ServiceInfo, ServiceMatcher, DefaultScheduler
14+
from hello import Group, ServiceQuery, Sender, Receiver, ServiceInfo, ServiceMatcher, AbstractScheduler
1515

1616
log = get_logger('Discoverer')
1717

@@ -87,10 +87,9 @@ def stop(self) -> None:
8787
self._receiver.stop()
8888

8989
def discover(self, query: ServiceQuery | None = None) -> None:
90-
if query:
91-
self._matcher = ServiceMatcher(query)
92-
9390
if self._group:
91+
if query:
92+
self._matcher = ServiceMatcher(query)
9493
if self._matcher:
9594
self._sender.send(self._matcher.query)
9695
log.info('Service discovery initiated', group=self._group, query=self._matcher.query)
@@ -150,7 +149,7 @@ def _execute_handler(self, handler: OnDiscoveryEvent, event: DiscoveryEvent) ->
150149
log.warn('Error in event handler execution', event=event, error=error)
151150

152151

153-
class ScheduledDiscoverer(DefaultScheduler[ServiceQuery], Discoverer):
152+
class ScheduledDiscoverer(AbstractScheduler[ServiceQuery], Discoverer):
154153

155154
def __init__(self, discoverer: Discoverer, timer: IReusableTimer) -> None:
156155
super().__init__(timer)

hello/scheduler.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414

1515
class Scheduler(Generic[T]):
1616

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

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

2323

24-
class DefaultScheduler(Scheduler[T]):
24+
class AbstractScheduler(Scheduler[T]):
2525

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

35-
def stop(self) -> None:
36-
self._timer.cancel()
37-
3835
def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool = False) -> None:
3936
if one_shot:
4037
self._timer.start(interval, self._execute, [data])
@@ -43,6 +40,9 @@ def schedule(self, data: T | None = None, interval: float = 60, one_shot: bool =
4340
self._timer.start(interval, self._execute_and_restart, [data])
4441
log.info('Periodic execution scheduled', data=data, interval=interval)
4542

43+
def stop(self) -> None:
44+
self._timer.cancel()
45+
4646
def _execute(self, data: T | None = None) -> None:
4747
raise NotImplementedError()
4848

hello/service.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ def to_dict(self) -> dict[str, Any]:
2929

3030
@dataclass
3131
class ServiceQuery(object):
32-
name_filter: str
33-
role_filter: str
32+
name: str
33+
role: str
3434

3535

3636
class ServiceMatcher(object):
3737

3838
def __init__(self, query: ServiceQuery) -> None:
3939
self.query = query
40-
self._name_matcher = re.compile(self.query.name_filter)
41-
self._role_matcher = re.compile(self.query.role_filter)
40+
self._name_matcher = re.compile(self.query.name)
41+
self._role_matcher = re.compile(self.query.role)
4242

4343
def matches(self, info: ServiceInfo) -> bool:
4444
name_match = self._name_matcher.match(info.name)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
from common_utility import IReusableTimer
77
from context_logger import setup_logging
88

9-
from hello import DefaultScheduler
9+
from hello import AbstractScheduler
1010

1111

12-
class DefaultSchedulerDiscovererTest(TestCase):
12+
class AbstractSchedulerTest(TestCase):
1313

1414
@classmethod
1515
def setUpClass(cls):
@@ -77,7 +77,7 @@ def test_execute_and_restart_restarts_timer(self):
7777
timer.restart.assert_called_once()
7878

7979

80-
class TestScheduler(DefaultScheduler[Any]):
80+
class TestScheduler(AbstractScheduler[Any]):
8181

8282
def __init__(self, timer: IReusableTimer) -> None:
8383
super().__init__(timer)

0 commit comments

Comments
 (0)