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
5 changes: 2 additions & 3 deletions examples/daqmx_analog_input_measurement/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

daqmx_analog_input_measurement_service.host_service()
input("Press enter to close the measurement service.\n")
daqmx_analog_input_measurement_service.close_service()
with daqmx_analog_input_measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
5 changes: 2 additions & 3 deletions examples/dc_measurement_labviewUI/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

dc_measurement_service.host_service()
input("Press enter to close the measurement service.\n")
dc_measurement_service.close_service()
with dc_measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
5 changes: 2 additions & 3 deletions examples/dc_measurement_measurementUI/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

dc_measurement_service.host_service()
input("Press enter to close the measurement service.\n")
dc_measurement_service.close_service()
with dc_measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
5 changes: 2 additions & 3 deletions examples/sample_measurement/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

sample_measurement_service.host_service()
input("Press enter to close the measurement service.\n")
sample_measurement_service.close_service()
with sample_measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

measurement_service.host_service()
input("Press enter to close the measurement service.\n")
measurement_service.close_service()
with measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,8 @@ def main(verbose: int):
level = logging.WARNING
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=level)

measurement_service.host_service()
input("Press enter to close the measurement service.\n")
measurement_service.close_service()
with measurement_service.host_service():
input("Press enter to close the measurement service.\n")


if __name__ == "__main__":
Expand Down
2 changes: 0 additions & 2 deletions ni_measurement_service/_internal/service_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
from ni_measurement_service._internal.stubs.ni.measurements.measurementservice import (
measurement_service_pb2_grpc,
)
from ni_measurement_service._internal.utilities import console_exit_functions
from ni_measurement_service.measurement.info import MeasurementInfo, ServiceInfo


Expand Down Expand Up @@ -91,7 +90,6 @@ def start(
_logger.info("Measurement service hosted on port: %s", port)
self.discovery_client.register_measurement_service(port, service_info, measurement_info)

console_exit_functions.setup_unregister_on_console_close(self.stop)
self.port = port
return port

Expand Down

This file was deleted.

19 changes: 17 additions & 2 deletions ni_measurement_service/measurement/service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""Framework to host measurement service."""

from __future__ import annotations

from typing import Any, Callable

from ni_measurement_service._internal import grpc_servicer
Expand Down Expand Up @@ -143,9 +145,14 @@ def _output(func):

return _output

def host_service(self) -> None:
def host_service(self) -> MeasurementService:
"""Host the registered measurement method as gRPC measurement service.

Returns
-------
MeasurementService: Context manager that can be used with a with-statement to close
the service.

Raises
------
Exception: If register measurement methods not available.
Expand All @@ -160,8 +167,16 @@ def host_service(self) -> None:
self.output_parameter_list,
self.measure_function,
)
return None
return self

def close_service(self) -> None:
"""Close the Service after un-registering with discovery service and cleanups."""
self.grpc_service.stop()

def __enter__(self) -> MeasurementService:
"""Enter the runtime context related to the measurement service."""
return self

def __exit__(self, exc_type, exc_value, traceback) -> None:
"""Exit the runtime context related to the measurement service."""
self.close_service()