-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathagent.py
More file actions
111 lines (80 loc) · 3.42 KB
/
agent.py
File metadata and controls
111 lines (80 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import spade
class Agent(spade.Agent.Agent):
class FindAgentsBehav(spade.Behaviour.OneShotBehaviour):
def onStart(self):
print "Finding Agents..."
def _process(self):
dad = spade.DF.DfAgentDescription()
results = self.myAgent.searchService(dad)
self.myAgent.receivers = []
for result in results:
self.myAgent.receivers.append(result.name.getName())
print 'Found services: {}'.format(self.myAgent.receivers)
msg = spade.ACLMessage.ACLMessage()
msg.setPerformative("inform")
msg.addReceiver(spade.AID.aid(self.myAgent.name, ['xmpp://{}'.format(self.myAgent.name)]))
msg.setContent("foundServices")
self.myAgent.send(msg)
def onEnd(self):
print "Finished finding agents..."
class RegisterServiceBehav(spade.Behaviour.OneShotBehaviour):
def onStart(self):
print "Registering service..."
def _process(self):
sd = spade.DF.ServiceDescription()
sd.setName("abc")
sd.setType("solver")
dad = spade.DF.DfAgentDescription()
dad.addService(sd)
dad.setAID(self.myAgent.getAID())
res = self.myAgent.registerService(dad)
print "Service Registered"
def onEnd(self):
print "Finished registering service..."
class RequestBehav(spade.Behaviour.EventBehaviour):
def onStart(self):
print "Broadcasting the request..."
def _process(self):
self.msg = spade.ACLMessage.ACLMessage()
self.msg.setPerformative('request')
self.msg.setOntology('poker')
self.msg.setLanguage('OWL-S')
self.msg.setContent(self.myAgent.content)
print 'I will request: {}'.format(self.myAgent.receivers)
for receiver in self.myAgent.receivers:
print 'Requesting {}...'.format(receiver)
aid = spade.AID.aid(name=receiver, addresses=['xmpp://{}'.format(receiver)])
self.msg.addReceiver(aid)
self.myAgent.send(self.msg)
def onEnd(self):
print "Finished broadcasting the request!"
class PerformBehav(spade.Behaviour.Behaviour):
def onStart(self):
print "Getting a request..."
def _process(self):
print 'Waiting for a message...'
self.msg = self._receive(True)
if self.msg:
print "Got message!"
else:
print "Didn't get message"
result = self.myAgent.interpret(self.msg.content)
response = self.msg.createReply()
response.setContent(result)
self.myAgent.send(response)
def onEnd(self):
print "Fulfilled a request!"
class AnswerBehav(spade.Behaviour.Behaviour):
def onStart(self):
print "Getting an answer..."
def _process(self):
print 'Waiting for an answer...'
self.msg = self._receive(True)
if self.msg:
print "Got answer! {} said: {}".format(self.msg.getSender().getName(), self.msg.getContent())
self.myAgent.answers[self.msg.getSender().getName()] = self.msg.getContent()
if len(self.myAgent.receivers) == len(self.myAgent.answers):
print 'Got all answers!'
self.myAgent.finished = True
def onEnd(self):
print "Finished listening for answers!"