Source code for volttron.platform.vip.agent.example




import gevent

from volttron.platform.vip.agent import *
from volttron.platform.scheduling import periodic


[docs]def meh(): return 'meh'
[docs]class ExampleAgent(Agent):
[docs] @Core.receiver('onsetup') def setup(self, sender, **kwargs): self.vip.rpc.export(self.foo) self.vip.rpc.export(self.baz, 'bar') self.vip.rpc.export(meh) self.vip.pubsub.add_bus('') self.core.onfinish.connect(self.finish) self.core.schedule(periodic(5), self.saybye)
[docs] @Core.receiver('onstart') def starting(self, sender, **kwargs): print('agent starting') _, _, my_id = self.vip.hello().get(timeout=3) print('I am', my_id) self.vip.pubsub.subscribe(my_id, 'this/topic', self.onmessage)
[docs] def onmessage(self, peer, sender, bus, topic, headers, message): print('received: peer=%r, sender=%r, bus=%r, topic=%r, headers=%r, message=%r' % ( peer, sender, bus, topic, headers, message))
[docs] @Core.receiver('onstop') def stopping(self, sender, **kwargs): print('agent stopping')
[docs] def finish(self, sender, **kwargs): print('agent finished')
[docs] @Core.schedule(periodic(3)) def sayhi(self): print('hello')
[docs] def saybye(self): print('bye')
[docs] @RPC.export def hello(self, name): return 'Hello, %s!' % (name,)
[docs] @RPC.export('bye') def goodbye(self, name): return 'Bye, %s!' % (name,)
[docs] def foo(self): return 'foo'
[docs] def baz(self): return 'baz'
if __name__ == '__main__': agent = ExampleAgent('example') print('1 ===========================') greenlet = gevent.spawn(agent.core.run) gevent.sleep(10) print('2 ===========================') print(agent.vip.ping('example', 'Are you hearing this?').get(timeout=3)) try: print(agent.vip.ping('doah', 'hear me!').get(timeout=3)) except Unreachable as e: print("It was unreachable!") print('3 ===========================') print(agent.vip.rpc.call('example', 'hello', 'world').get(timeout=3)) print(agent.vip.rpc.call('example', 'meh').get(timeout=3)) print(agent.vip.rpc.call('example', 'inspect').get(timeout=3)) print(agent.vip.rpc.call('example', 'hello.inspect').get(timeout=3)) print('4 ===========================') print(agent.vip.pubsub.publish('example', 'this/topic/here', {'key': 'value'}, 'Are you the Walrus?').get(timeout=3)) print('5 ===========================') sock = agent.vip.channel('example', 'testing') sock.send('Oh say can you see?') print(sock.recv()) print('6 ===========================') agent.core.stop() gevent.sleep(5)