#!/usr/bin/env python
import os, sys
import pprint
# import the Dromeo.py engine (as a) module, probably you will want to place this in another dir/package
import imp
PBSModulePath = os.path.join(os.path.dirname(__file__), '../src/python/')
try:
PBSFp, PBSPath, PBSDesc = imp.find_module('PublishSubscribe', [PBSModulePath])
PublishSubscribe = getattr( imp.load_module('PublishSubscribe', PBSFp, PBSPath, PBSDesc), 'PublishSubscribe' )
except ImportError as exc:
PublishSubscribe = None
sys.stderr.write("Error: failed to import module ({})".format(exc))
finally:
if PBSFp: PBSFp.close()
if not PublishSubscribe:
print ('Could not load the PublishSubscribe Module')
sys.exit(1)
else:
print ('PublishSubscribe Module loaded succesfully')
print('PublishSubscribe.VERSION = ' + PublishSubscribe.VERSION + "\n")
def _log( evt):
print( pprint.pformat({'topic': evt.topic, 'originalTopic': evt.originalTopic, 'tags': evt.tags, 'namespaces': evt.namespaces, 'timestamp': evt.timestamp}, 4) )
print( pprint.pformat(evt.data, 4) )
def handler1(evt):
print('Handler1' + "\n")
_log( evt)
evt.next()
# event abort
#evt.abort( )
# stop bubble propagation
#evt.propagate( False )
# stop propagation on same event
#evt.stop( )
#return False
def handler2(evt):
print('Handler2' + "\n")
_log( evt)
evt.next()
def handler3(evt):
print('Handler3' + "\n")
_log( evt)
evt.next()
def handler4(evt):
print('Handler4' + "\n")
_log( evt)
evt.next()
pb = PublishSubscribe( )
pb.on('Topic1/SubTopic11#Tag1#Tag2', handler1).on1('Topic1/SubTopic11#Tag1#Tag2@NS1', handler2).on('Topic1/SubTopic11#Tag1#Tag2@NS1@NS2', handler3).off('@NS1@NS2').pipeline('Topic1/SubTopic11#Tag2#Tag1', {'key1': 'value1'}).pipeline('Topic1/SubTopic11#Tag2#Tag1@NS1', {'key1': 'value1'})
|