1 import Behaviour
2 import AID
3 from xmpp import *
4
34
35
36
37
40 stanza = self._receive(False)
41 if stanza != None:
42 for item in stanza.getTag('query').getTags('item'):
43 jid=item.getAttr('jid')
44 if item.getAttr('subscription')=='remove':
45 if self.myAgent._roster.has_key(jid): del self.myAgent.roster[jid]
46 elif not self.myAgent._roster.has_key(jid): self.myAgent._roster[jid]={}
47 self.myAgent._roster[jid]['name']=item.getAttr('name')
48 self.myAgent._roster[jid]['ask']=item.getAttr('ask')
49 self.myAgent._roster[jid]['subscription']=item.getAttr('subscription')
50 self.myAgent._roster[jid]['groups']=[]
51 if not self.myAgent._roster[jid].has_key('resources'): self.myAgent._roster[jid]['resources']={}
52 for group in item.getTags('group'): self.myAgent._roster[jid]['groups'].append(group.getData())
53 self.myAgent._waitingForRoster = False
54
56 """
57 A member of an agent's Social Network
58 AID, presence & subscription
59 """
60 - def __init__(self, agent, jid, presence=''):
61 self.myAgent = agent
62 self._jid = jid
63 self._presence = presence
64
65
66 self._aid = AID.aid(name=jid, addresses=["xmpp://"+str(jid)])
67
68
69 roster = agent._roster
70 if roster.has_key(jid):
71 if roster[jid].has_key("subscription"):
72 self._subscription = roster[jid]["subscription"]
73 else:
74 self._subscription = "none"
75 else:
76 self._subscription = "none"
77
79 self._presence = presence
80
83
86