Package Peach :: Package Publishers :: Module remote
[hide private]

Source Code for Module Peach.Publishers.remote

 1   
 2  ''' 
 3  Use the Agent system to have remote Publishers 
 4   
 5  @author: Michael Eddington 
 6  @version: $Id$ 
 7  ''' 
 8   
 9  # 
10  # Copyright (c) 2008 Michael Eddington 
11  # 
12  # Permission is hereby granted, free of charge, to any person obtaining a copy  
13  # of this software and associated documentation files (the "Software"), to deal 
14  # in the Software without restriction, including without limitation the rights  
15  # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell  
16  # copies of the Software, and to permit persons to whom the Software is  
17  # furnished to do so, subject to the following conditions: 
18  # 
19  # The above copyright notice and this permission notice shall be included in     
20  # all copies or substantial portions of the Software. 
21  # 
22  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  
23  # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  
24  # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE  
25  # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  
26  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
27  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
28  # SOFTWARE. 
29  # 
30   
31  # Authors: 
32  #   Michael Eddington (mike@phed.org) 
33   
34  # $Id$ 
35   
36  from Peach.Engine.engine import Engine 
37  from Peach.publisher import * 
38   
39 -class RemotePublisher(Publisher):
40 ''' 41 Load a publisher on a remote Agent 42 ''' 43
44 - def __init__(self, agentName, name, cls, *args):
45 self._agentName = agentName 46 self._name = name 47 self._cls = cls 48 self._args = args 49 self._initialized = False
50
51 - def start(self):
52 if self._initialized == False: 53 self._agent = Engine.context.agent[self._agentName] 54 self._agent.PublisherInitialize(self._name, self._cls, self._args) 55 self._initialized = True 56 57 self._agent.PublisherStart(self._name)
58
59 - def stop(self):
60 self._agent.PublisherStop(self._name)
61
62 - def send(self, data):
63 self._agent.PublisherSend(self._name, data)
64
65 - def receive(self, size = None):
66 self._agent.PublisherReceive(self._name, size)
67
68 - def call(self, method, args):
69 self._agent.PublisherCall(self._name, method, args)
70
71 - def property(self, property, value = None):
72 self._agent.PublisherProperty(self._name, value)
73
74 - def connect(self):
75 self._agent.PublisherConnect(self._name)
76
77 - def accept(self):
78 self._agent.PublisherAccept(self._name)
79
80 - def close(self):
81 self._agent.PublisherClose(self._name)
82 83 84 85 # end 86