8
|
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
|