From 90cf8a882284a68e76c4eb6f40b8de85b0b90c6f Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Wed, 9 Aug 2017 10:50:39 +0100 Subject: [PATCH] Introduced basic zeromq pub --- force_bdss/core_plugins/dummy/dummy_plugin.py | 7 +++++- .../dummy/ui_notification/__init__.py | 0 .../dummy/ui_notification/ui_notification.py | 17 ++++++++++++++ .../ui_notification_factory.py | 23 +++++++++++++++++++ .../ui_notification/ui_notification_model.py | 7 ++++++ requirements/requirements.txt | 1 + 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 force_bdss/core_plugins/dummy/ui_notification/__init__.py create mode 100644 force_bdss/core_plugins/dummy/ui_notification/ui_notification.py create mode 100644 force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py create mode 100644 force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py diff --git a/force_bdss/core_plugins/dummy/dummy_plugin.py b/force_bdss/core_plugins/dummy/dummy_plugin.py index bc64438..15bc6ef 100644 --- a/force_bdss/core_plugins/dummy/dummy_plugin.py +++ b/force_bdss/core_plugins/dummy/dummy_plugin.py @@ -2,6 +2,9 @@ from force_bdss.api import BaseExtensionPlugin, plugin_id from force_bdss.core_plugins.dummy.dummy_notification_listener\ .dummy_notification_listener_factory import \ DummyNotificationListenerFactory +from force_bdss.core_plugins.dummy.ui_notification.ui_notification_factory \ + import \ + UINotificationFactory from .csv_extractor.csv_extractor_factory import CSVExtractorFactory from .kpi_adder.kpi_adder_factory import KPIAdderFactory from .dummy_dakota.dakota_factory import DummyDakotaFactory @@ -26,4 +29,6 @@ class DummyPlugin(BaseExtensionPlugin): KPIAdderFactory(self)] def _notification_listener_factories_default(self): - return [DummyNotificationListenerFactory(self)] + return [DummyNotificationListenerFactory(self), + UINotificationFactory(self) + ] diff --git a/force_bdss/core_plugins/dummy/ui_notification/__init__.py b/force_bdss/core_plugins/dummy/ui_notification/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py new file mode 100644 index 0000000..e12c646 --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py @@ -0,0 +1,17 @@ +from traits.api import Any + +from force_bdss.api import BaseNotificationListener +import zmq + + +class UINotification(BaseNotificationListener): + _zmq_context = Any() + _zmq_socket = Any() + + def deliver(self, model, message): + self._zmq_socket.send(("ACTION {}".format(message)).encode("utf-8")) + + def init_persistent_state(self, model): + self._zmq_context = zmq.Context() + self._zmq_socket = self._zmq_context.socket(zmq.PUB) + self._zmq_socket.bind("tcp://*:12345") diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py new file mode 100644 index 0000000..2af65f8 --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py @@ -0,0 +1,23 @@ +from traits.api import String + +from force_bdss.ids import factory_id +from force_bdss.notification_listeners.base_notification_listener_factory \ + import \ + BaseNotificationListenerFactory +from .ui_notification import UINotification +from .ui_notification_model import UINotificationModel + + +class UINotificationFactory(BaseNotificationListenerFactory): + id = String(factory_id("enthought", "ui_notification")) + + name = String("UI Notification") + + def create_model(self, model_data=None): + if model_data is None: + model_data = {} + + return UINotificationModel(self, **model_data) + + def create_listener(self): + return UINotification(self) diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py new file mode 100644 index 0000000..c20ad09 --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py @@ -0,0 +1,7 @@ +from force_bdss.notification_listeners.base_notification_listener_model \ + import \ + BaseNotificationListenerModel + + +class UINotificationModel(BaseNotificationListenerModel): + pass diff --git a/requirements/requirements.txt b/requirements/requirements.txt index cfc2705..7f6b07c 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,3 +2,4 @@ envisage==4.6.0 click==6.7 six==1.10.0 stevedore==1.24.0 +pyzmq==16.0.2 -- GitLab