comparison tools/python-PE/CompactRouting/Start-dycstra.py @ 8:6c40056777be

Initial revision
author fuchita
date Sat, 16 Feb 2008 13:18:02 +0900
parents
children
comparison
equal deleted inserted replaced
7:1809e2b05824 8:6c40056777be
1 import re
2 import sys
3 import string
4 import struct
5
6 sys.path.append('../modules')
7
8 import FederatedLinda
9 from CompactRouting import *
10
11 ROUTING_HEADER_FORMAT = "!I"
12 MAKER = "::::"
13
14 TUPLE_ID_LINKCONFIG = 1
15 TUPLE_ID_ROUTING = 2
16
17 ROUTING_COMMAND_CONNECT = 1
18 ROUTING_COMMAND_DISCONNECT = 2
19 ROUTING_COMMAND_TRANSFER = 3
20 ROUTING_COMMAND_UPDATE_TABLE = 4
21
22 testxml = \
23 """<graph name = "Graf">
24 <node label = "A" tsid = "localhost:10000">
25 <destination label = "B"/>
26 </node>
27 <node label = "B" tsid = "localhost:10001">
28 <destination label = "C"/>
29 <destination label = "D"/>
30 </node>
31 <node label = "C" tsid = "localhost:10002">
32 <destination label = "D"/>
33 </node>
34 <node label = "D" tsid = "localhost:10003">
35 </node>
36 </graph>
37 """
38
39 def getFirstTsid(xmltext):
40 p = re.compile('(?<=tsid = \").*(?=\")')
41 m = p.findall(xmltext)
42 return m[0]
43
44
45
46 if __name__ == "__main__":
47
48 if (len(sys.argv) == 2):
49 print " : %s <xmlfilename>" % sys.argv[0]
50 xmltext = open(sys.argv[1]).read()
51 if xmltext is None:
52 sys.exit(1)
53
54 else:
55 xmltext = testxml
56 #close else
57 pass
58
59 firsttsid = getFirstTsid(xmltext)
60 flinda = FederatedLinda.FederatedLinda()
61 #first Landmark set
62 landmark_tsidlist = firsttsid + ","
63 #define dycstra hopcount
64 landmark_hopcount = 2
65
66 host, portnum = string.split(firsttsid,':')
67
68 #set send packet format
69 data = struct.pack(ROUTING_HEADER_FORMAT,landmark_hopcount)+landmark_tsidlist+MAKER+testxml
70 linda1 = flinda.open(host, int(portnum))
71 linda1.Out(TUPLE_ID_LINKCONFIG, data)
72
73 #landmark_data = struct.pack(ROUTING_HEADER_FORMAT,landmark_hopcount,rt.landmark_tslist)
74 #linda1.Out(TUPLE_ID_LANDMARKCONFIG, landmark_data)
75
76 flinda.sync()
77
78
79