def sendInitialTaskToSlaves(self): tasks = initTasks.genInitalTasks(self.graph, self.p, self.m) log.info(str(len(tasks)) + " initial tasks created") for t in tasks: slaveIndex = randint(0, len(self.aliveSlaves) - 1) slaveServer = self.aliveSlaves[slaveIndex] message = PUSHTASK + MESSAGE_DELIMITER + t.toNetString() network.sendToIP(slaveServer.IP, slaveServer.port, message) log.info("Initial task sent to server " + slaveServer.ID)
def sendInitialTaskToSlaves(self): tasks = initTasks.genInitalTasks(self.graph, self.p, self.m) log.info(str(len(tasks)) + " initial tasks created") for t in tasks: slaveIndex = randint(0, len(self.aliveSlaves)-1) slaveServer = self.aliveSlaves[slaveIndex] message = PUSHTASK + MESSAGE_DELIMITER + t.toNetString() network.sendToIP(slaveServer.IP, slaveServer.port, message) log.info("Initial task sent to server " + slaveServer.ID)
def sendJobCompletionNotiToMaster(self): masterServer = filter(lambda s : s.role=='master' and s.alive, self.servers)[0] endTime = time.time() stats.timeTaken = endTime - self.startTime network.sendToIP(masterServer.IP, masterServer.port, JOBCOMPLETE + MESSAGE_DELIMITER + stats.toNetString()) log.info("Job completion notification sent") # Clean bloom filter and wait for next input BloomHashFilter.clean()
def sendJobCompletionNotiToMaster(self): masterServer = filter(lambda s: s.role == 'master' and s.alive, self.servers)[0] endTime = time.time() stats.timeTaken = endTime - self.startTime network.sendToIP(masterServer.IP, masterServer.port, JOBCOMPLETE + MESSAGE_DELIMITER + stats.toNetString()) log.info("Job completion notification sent") # Clean bloom filter and wait for next input BloomHashFilter.clean()
from config.servers import servers from config.networkParams import MESSAGE_DELIMITER import src.util.network as network def readInput(): '''First line contains two arguments n = number of vertices m = number of edges in the graph next m line conatins (a,b) reresenting an edge.''' n, m = map(int, raw_input().split(" ")) edges = [] for i in range(0, m): a, b = map(int, raw_input().split(" ")) edges.append((a, b)) return n, m, edges def findMasterIpPort(): for s in servers : if s.role == 'master': return s.IP, s.port #master not found assert False if __name__ == '__main__': n, m, edges = readInput() graph = Graph(n, m, edges) MasterIP, MasterPort = findMasterIpPort() network.sendToIP(MasterIP, MasterPort, "INPUT____________" + MESSAGE_DELIMITER + graph.toString()) # TODO Wait for computation to end # merge all output file if required
def sendGraphToSlaves(self): message = GRAPH + MESSAGE_DELIMITER + self.graph.toString() for slave in self.aliveSlaves: network.sendToIP(slave.IP, slave.port, message) log.info("Graph sent to server " + slave.ID)
def sendNetworkPrime(self): message = NETWORKPRIME + MESSAGE_DELIMITER + str(self.p) for slave in self.aliveSlaves: network.sendToIP(slave.IP, slave.port, message) log.info("Network prime sent to " + slave.ID)
def sendProcessStartNotification(self): message = STARTPROCESSING for slave in self.aliveSlaves: network.sendToIP(slave.IP, slave.port, message) log.info("Start Processing message sent to server " + slave.ID)
def sendServerListToSlaves(self): message = SERVERINFO + MESSAGE_DELIMITER message += server.listToNetString(self.servers) for slave in self.aliveSlaves: network.sendToIP(slave.IP, slave.port, message) log.info("Server list sent to server " + slave.ID)
def testHelloWorld(IP, port): message = "Hello$world" response = network.sendToIP(IP, port, message) print 'Hello World Test Passed'