Skip to content

Commit

Permalink
fix #77
Browse files Browse the repository at this point in the history
  • Loading branch information
previ committed Apr 29, 2018
1 parent f1ca0be commit dbbd304
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 31 deletions.
32 changes: 6 additions & 26 deletions event.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import logging
import threading
import rospy
import std_msgs
import json
from pubsub import pub

class EventManager:
_instance = None
Expand All @@ -14,42 +12,24 @@ def get_instance(cls, node_name=None):

def __init__(self, node_name):
self._node_name = node_name
rospy.init_node(node_name, anonymous=True, disable_signals=True)
self._publishers = {}
self._event_generators = []
self._event_listeners = []

def publish(self, topic, message):
publisher = self._publishers.get(topic)
if publisher is None:
publisher = rospy.Publisher("/" + topic, std_msgs.msg.String, queue_size=10)
self._publishers[topic] = publisher
publisher.publish(json.dumps(message))
def publish(self, topic, msg):
pub.sendMessage(topic, message=msg)

def register_event_listener(self, topic, callback):
self._event_listeners.append(rospy.Subscriber("/" + topic, std_msgs.msg.String, callback))
pub.subscribe(callback, topic)

def register_event_generator(self, generator_func):
generator = threading.Thread(target=generator_func)
self._event_generators.append(generator)
generator.start()

def unregister_listeners(self):
for subscriber in self._event_listeners:
try:
subscriber.unregister()
except:
logging.error("unable to unregister subscriber")
self._event_listeners = []
pub.unsubAll()

def unregister_publishers(self):
for publisher in self._publishers:
try:
publisher.unregister()
except:
logging.error("unable to unregister publisher")
self._event_listeners = []

pass

def start_event_generators(self):
for g in self._event_generators:
Expand Down
Loading

0 comments on commit dbbd304

Please sign in to comment.