Mercurial > hg > FederatedLinda
diff tools/python-PE/CompactRouting/Start-dycstra.py @ 8:6c40056777be
Initial revision
author | fuchita |
---|---|
date | Sat, 16 Feb 2008 13:18:02 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/python-PE/CompactRouting/Start-dycstra.py Sat Feb 16 13:18:02 2008 +0900 @@ -0,0 +1,79 @@ +import re +import sys +import string +import struct + +sys.path.append('../modules') + +import FederatedLinda +from CompactRouting import * + +ROUTING_HEADER_FORMAT = "!I" +MAKER = "::::" + +TUPLE_ID_LINKCONFIG = 1 +TUPLE_ID_ROUTING = 2 + +ROUTING_COMMAND_CONNECT = 1 +ROUTING_COMMAND_DISCONNECT = 2 +ROUTING_COMMAND_TRANSFER = 3 +ROUTING_COMMAND_UPDATE_TABLE = 4 + +testxml = \ +"""<graph name = "Graf"> + <node label = "A" tsid = "localhost:10000"> + <destination label = "B"/> + </node> + <node label = "B" tsid = "localhost:10001"> + <destination label = "C"/> + <destination label = "D"/> + </node> + <node label = "C" tsid = "localhost:10002"> + <destination label = "D"/> + </node> + <node label = "D" tsid = "localhost:10003"> + </node> +</graph> +""" + +def getFirstTsid(xmltext): + p = re.compile('(?<=tsid = \").*(?=\")') + m = p.findall(xmltext) + return m[0] + + + +if __name__ == "__main__": + + if (len(sys.argv) == 2): + print " : %s <xmlfilename>" % sys.argv[0] + xmltext = open(sys.argv[1]).read() + if xmltext is None: + sys.exit(1) + + else: + xmltext = testxml + #close else + pass + + firsttsid = getFirstTsid(xmltext) + flinda = FederatedLinda.FederatedLinda() + #first Landmark set + landmark_tsidlist = firsttsid + "," + #define dycstra hopcount + landmark_hopcount = 2 + + host, portnum = string.split(firsttsid,':') + + #set send packet format + data = struct.pack(ROUTING_HEADER_FORMAT,landmark_hopcount)+landmark_tsidlist+MAKER+testxml + linda1 = flinda.open(host, int(portnum)) + linda1.Out(TUPLE_ID_LINKCONFIG, data) + + #landmark_data = struct.pack(ROUTING_HEADER_FORMAT,landmark_hopcount,rt.landmark_tslist) + #linda1.Out(TUPLE_ID_LANDMARKCONFIG, landmark_data) + + flinda.sync() + + +