annotate tools/python-PE/Routing/FederatedLinda.py @ 8:6c40056777be

Initial revision
author fuchita
date Sat, 16 Feb 2008 13:18:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
6c40056777be Initial revision
fuchita
parents:
diff changeset
1 import psxlinda
6c40056777be Initial revision
fuchita
parents:
diff changeset
2
6c40056777be Initial revision
fuchita
parents:
diff changeset
3 class FederatedLinda:
6c40056777be Initial revision
fuchita
parents:
diff changeset
4 def __init__(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
5 self.tuplespaces = []
6c40056777be Initial revision
fuchita
parents:
diff changeset
6
6c40056777be Initial revision
fuchita
parents:
diff changeset
7 def open(self, hostname, port):
6c40056777be Initial revision
fuchita
parents:
diff changeset
8 tsid = psxlinda.open(hostname, port)
6c40056777be Initial revision
fuchita
parents:
diff changeset
9 if (tsid == -1):
6c40056777be Initial revision
fuchita
parents:
diff changeset
10 return None
6c40056777be Initial revision
fuchita
parents:
diff changeset
11
6c40056777be Initial revision
fuchita
parents:
diff changeset
12 linda = Linda(tsid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
13 # self.tuplespaces.append(linda)
6c40056777be Initial revision
fuchita
parents:
diff changeset
14
6c40056777be Initial revision
fuchita
parents:
diff changeset
15 return linda
6c40056777be Initial revision
fuchita
parents:
diff changeset
16
6c40056777be Initial revision
fuchita
parents:
diff changeset
17 def sync(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
18 psxlinda.sync()
6c40056777be Initial revision
fuchita
parents:
diff changeset
19
6c40056777be Initial revision
fuchita
parents:
diff changeset
20
6c40056777be Initial revision
fuchita
parents:
diff changeset
21 # Reply from TupleSpace
6c40056777be Initial revision
fuchita
parents:
diff changeset
22
6c40056777be Initial revision
fuchita
parents:
diff changeset
23 class Reply:
6c40056777be Initial revision
fuchita
parents:
diff changeset
24 def __init__(self, seq):
6c40056777be Initial revision
fuchita
parents:
diff changeset
25 self.seq = seq
6c40056777be Initial revision
fuchita
parents:
diff changeset
26
6c40056777be Initial revision
fuchita
parents:
diff changeset
27 def reply(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
28 return psxlinda.reply(self.seq)
6c40056777be Initial revision
fuchita
parents:
diff changeset
29
6c40056777be Initial revision
fuchita
parents:
diff changeset
30
6c40056777be Initial revision
fuchita
parents:
diff changeset
31 # Linda class
6c40056777be Initial revision
fuchita
parents:
diff changeset
32 TUPLE_ID_COUNT_CLIENT = 65535
6c40056777be Initial revision
fuchita
parents:
diff changeset
33
6c40056777be Initial revision
fuchita
parents:
diff changeset
34 class Linda:
6c40056777be Initial revision
fuchita
parents:
diff changeset
35 def __init__(self, tsid):
6c40056777be Initial revision
fuchita
parents:
diff changeset
36 self.tsid = tsid
6c40056777be Initial revision
fuchita
parents:
diff changeset
37
6c40056777be Initial revision
fuchita
parents:
diff changeset
38 def In(self, tid):
6c40056777be Initial revision
fuchita
parents:
diff changeset
39 seq = psxlinda.In(self.tsid, tid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
40 return Reply(seq)
6c40056777be Initial revision
fuchita
parents:
diff changeset
41
6c40056777be Initial revision
fuchita
parents:
diff changeset
42 def Rd(self, tid):
6c40056777be Initial revision
fuchita
parents:
diff changeset
43 seq = psxlinda.Rd(self.tsid, tid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
44 return Reply(seq)
6c40056777be Initial revision
fuchita
parents:
diff changeset
45
6c40056777be Initial revision
fuchita
parents:
diff changeset
46 def Ck(self, tid):
6c40056777be Initial revision
fuchita
parents:
diff changeset
47 seq = psxlinda.Ck(self.tsid, tid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
48 return Reply(seq)
6c40056777be Initial revision
fuchita
parents:
diff changeset
49
6c40056777be Initial revision
fuchita
parents:
diff changeset
50 def WaitRd(self, tid):
6c40056777be Initial revision
fuchita
parents:
diff changeset
51 seq = psxlinda.WaitRd(self.tsid, tid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
52 return Reply(seq)
6c40056777be Initial revision
fuchita
parents:
diff changeset
53
6c40056777be Initial revision
fuchita
parents:
diff changeset
54 def Out(self, tid, data):
6c40056777be Initial revision
fuchita
parents:
diff changeset
55 psxlinda.Out(self.tsid, tid, data)
6c40056777be Initial revision
fuchita
parents:
diff changeset
56
6c40056777be Initial revision
fuchita
parents:
diff changeset
57 def close(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
58 psxlinda.close(self.tsid)
6c40056777be Initial revision
fuchita
parents:
diff changeset
59 self.tsid = None
6c40056777be Initial revision
fuchita
parents:
diff changeset
60
6c40056777be Initial revision
fuchita
parents:
diff changeset
61 def getid(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
62 rep = self.In(TUPLE_ID_COUNT_CLIENT)
6c40056777be Initial revision
fuchita
parents:
diff changeset
63 ret = None
6c40056777be Initial revision
fuchita
parents:
diff changeset
64 while (not ret):
6c40056777be Initial revision
fuchita
parents:
diff changeset
65 psxlinda.sync()
6c40056777be Initial revision
fuchita
parents:
diff changeset
66 ret = rep.reply()
6c40056777be Initial revision
fuchita
parents:
diff changeset
67 return ret
6c40056777be Initial revision
fuchita
parents:
diff changeset
68
6c40056777be Initial revision
fuchita
parents:
diff changeset
69 def __del__(self):
6c40056777be Initial revision
fuchita
parents:
diff changeset
70 if self.tsid:
6c40056777be Initial revision
fuchita
parents:
diff changeset
71 self.close()
6c40056777be Initial revision
fuchita
parents:
diff changeset
72