
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3289 fd906abe-77d9-0310-91a1-e0d9ade77398
73 lines
1.9 KiB
Text
73 lines
1.9 KiB
Text
================================================
|
|
Agents for Job Execution and Communication Tasks
|
|
================================================
|
|
|
|
($Id$)
|
|
|
|
>>> from cybertools.agent.tests import tester
|
|
|
|
|
|
Communication Handling
|
|
======================
|
|
|
|
Communication services are provided by handlers specified in the ``talk``
|
|
package.
|
|
|
|
Set up and start an agent with a server
|
|
---------------------------------------
|
|
|
|
>>> config = '''
|
|
... controller(names=['core.sample'])
|
|
... scheduler(name='core')
|
|
... logger(name='default', standard=30)
|
|
... talk.server(names=['http'])
|
|
... talk.server.http(port=8081)
|
|
... talk.http(handler='testing')
|
|
... '''
|
|
>>> from cybertools.agent.main import setup
|
|
>>> master = setup(config)
|
|
Starting agent application...
|
|
Using controllers core.sample.
|
|
Setting up HTTP handler for port 8081.
|
|
|
|
>>> master.servers
|
|
[<cybertools.agent.talk.http.HttpServer object...>]
|
|
|
|
We also provide a class to be used for creating subscribers, i.e. objects
|
|
that receive messages.
|
|
|
|
>>> class Subscriber(object):
|
|
... def __init__(self, name):
|
|
... self.name = name
|
|
... def onMessage(self, interaction, data):
|
|
... print ('%s receiving: interaction=%s, data=%s' %
|
|
... (self.name, interaction, data))
|
|
... tester.stop()
|
|
|
|
>>> serverSub = Subscriber('server')
|
|
>>> master.servers[0].subscribe(serverSub, 'testing')
|
|
|
|
Set up a client
|
|
---------------
|
|
|
|
In order to simplify the testing we do not set up a separate agent to
|
|
work with the client but handle the client directly.
|
|
|
|
>>> from cybertools.agent.talk.http import HttpClient
|
|
>>> client = HttpClient(master)
|
|
|
|
>>> clientSub = Subscriber('client')
|
|
|
|
>>> session = client.connect(clientSub, 'http://localhost:8081/')
|
|
|
|
Run the communication dialog
|
|
----------------------------
|
|
|
|
>>> tester.run()
|
|
client receiving: interaction=None, data={u'status': u'OK'}
|
|
|
|
|
|
Fin de Partie
|
|
=============
|
|
|
|
>>> tester.stopThreads()
|