def sendNreadData(self,data,host,port): msg_len = struct.pack('>L', len(data)) self.sd.sendall(msg_len + data) len_buf = self.receiveMsg(self.sd, 4) msg_len = struct.unpack('>L', len_buf)[0] msg_in = self.receiveMsg(self.sd, msg_len) r = pipe_pb2.CommandMessage(); msg_read = r.ParseFromString(msg_in) count = msg_read.request.file.chunkCount print count filestack = range(count) filestack[msg_read.request.file.chunkId] = msg_read start=1 filename = r.request.file.filename path = "C:\\Users\\mukul\\git\\fluffyglobal\\png\\" msg_len = struct.pack('>L', len(data)) while start<count : len_buf = self.receiveMsg(self.sd, 4) msg_len = struct.unpack('>L', len_buf)[0] msg_in = self.receiveMsg(self.sd, msg_len) cl = pipe_pb2.CommandMessage(); parsedmsg = cl.ParseFromString(msg_in) countid = parsedmsg.request.file.chunkId filestack[countid] = parsedmsg.request.file.data start= start+1 result = self.mergefile(filestack) with open((path).append(filename), "w") as outfile: outfile.write(result) self.sd.close return r
def genChunkInfoPutMsg(self, filename, noofchunks, chunkid): print("SC 172 noofchunks") print noofchunks current_time = datetime.now().time() cm = pipe_pb2.CommandMessage() cm.header.node_id = 2 cm.header.origin.id = 1 cm.header.origin.host = self.host cm.header.origin.port = self.port cm.header.time = 10000 cm.header.destination = 6 clmsg2 = clientMessage_pb2.Operation.Value("PUT") #b = self.chunkFile() #cm.reqMsg.data = filecontent cm.reqMsg.key = filename cm.reqMsg.seq_no = chunkid cm.reqMsg.operation = clmsg2 cm.reqMsg.chunkInfo.no_of_chunks = noofchunks cm.reqMsg.chunkInfo.seq_size = 1 cm.reqMsg.chunkInfo.time = 123 #cm.reqMsg.chunkInfo.time = current_time # cm.reqMsg = clmsg # cm.reqMsg.Value(clmsg) var = cm.SerializeToString() return var
def _recvCommandMessage(self): len_buf = self.receiveMessageFromServer(self.socket, 4) msg_in_len = struct.unpack('>L', len_buf)[0] msg_in = self.receiveMessageFromServer(self.socket, msg_in_len) r = pipe_pb2.CommandMessage() r.ParseFromString(msg_in) return r
def genPing(self): cm = pipe_pb2.CommandMessage() cm.header.node_id = 999 cm.header.time = 11234 cm.ping = True msg = cm.SerializeToString() return msg
def buildPingCommandMessage(self, nodeId, time): newCommandMsg = pipe_pb2.CommandMessage() newCommandMsg.header.node_id = nodeId newCommandMsg.header.time = time newCommandMsg.ping = True newCommandMsgString = newCommandMsg.SerializeToString() self.logger.logInfoMessage("Client: Created a new ping message: " + newCommandMsgString) return newCommandMsgString
def buildGeneralMessage(self, nodeId, time, message): newCommandMsg = pipe_pb2.CommandMessage() newCommandMsg.header.node_id = nodeId newCommandMsg.header.time = time newCommandMsg.message = message newCommandMsgString = newCommandMsg.SerializeToString() self.logger.logInfoMessage( "Client: Created a new general build message: " + newCommandMsgString) return newCommandMsgString
def getFile(self, filename): cm = pipe_pb2.CommandMessage() cm.globalHeader.cluster_id =3 cm.globalHeader.time = 10000 cm.globalHeader.destination_id = 6 cm.request.requestId ="2" cm.request.requestType = pipe_pb2.RequestType.Value("READ") cm.request.fileName = filename var = cm.SerializeToString() result = self.sendNreadData(var, self.host, self.port)
def getFile(self, name): cm = pipe_pb2.CommandMessage() cm.header.node_id = 999 cm.header.time = 11234 cm.task.task_type = common_pb2.Task.TaskType.Value("READ") cm.task.sender = "127.0.0.1" cm.task.filename = name cm.message = name request = cm.SerializeToString() return request
def deleteFile(self, filename): cm = pipe_pb2.CommandMessage() cm.globalHeader.cluster_id =3 cm.globalHeader.time = 10000 cm.globalHeader.destination_id = 6 cm.request.requestId ="2" print (filename) print ("116") cm.request.requestType = pipe_pb2.RequestType.Value("DELETE") cm.request.file.filename = filename var = cm.SerializeToString() result = self.sendData(var, self.host, self.port)
def genChunkedMsg(self, filename, filecontent, noofchunks, chunkid): cm = pipe_pb2.CommandMessage() cm.header.node_id = 999 cm.header.time = 11234 cm.task.task_type = common_pb2.Task.TaskType.Value("WRITE") cm.task.sender = "127.0.0.1" cm.task.filename = filename cm.task.chunk_no = chunkid cm.task.no_of_chunks = noofchunks cm.fileContent = filecontent msg = cm.SerializeToString() return msg
def sendDataGet(self, data, host, port, path): print("SC 249") msg_len = struct.pack('>L', len(data)) print("SC 251") self.sd.sendall(msg_len + data) print("SC 253 Send the get request") r = pipe_pb2.CommandMessage() #my_array = array('i', r) my_array = [] * 6 iter = 0 noChunk = 2 while iter < noChunk: iter += 1 len_buf = self.receiveMsg(self.sd, 4) #print print("SC 255 len_buf") print len_buf msg_len = struct.unpack('>L', len_buf)[0] msg_in = self.receiveMsg(self.sd, msg_len) print("SC 259 msg_in") print len(msg_in) print("SC 257") print("SC 259") r.ParseFromString(msg_in) #self.sd.close print("SC 262 Getting the chunk id") print r.resMsg.chunk_no index = int(r.resMsg.chunk_no) my_array.insert(index, r.resMsg.data) print("SC 277 Getting the total number of chunks") noChunk = r.resMsg.no_of_chunks print noChunk #totalCount = 2 #self.sd.close #if totalCount <2: # break print("SC 264 printing the value of r") #totalCount -= 1 #print r fileDir = os.path.dirname(os.path.realpath('__file__')) path = os.path.join(fileDir, '../output/nasa2.jpg') for r in my_array: with open(path, "a") as outfile: outfile.write(r) return my_array
def buildDeleteFileCommandMessage(self, nodeId, time, myIp, filename): newCommandMsg = pipe_pb2.CommandMessage() newCommandMsg.header.node_id = nodeId newCommandMsg.header.time = time newCommandMsg.message = filename newCommandMsg.filetask.file_task_type = pipe_pb2.FileTask.FileTaskType.Value( "DELETE") newCommandMsg.filetask.sender = myIp newCommandMsg.filetask.filename = filename newCommandMsgString = newCommandMsg.SerializeToString() self.logger.logInfoMessage("Client: Created a new delete message: " + newCommandMsgString) return newCommandMsgString
def genPing(self): print "Start request_ping() executing" cm = pipe_pb2.CommandMessage() cm.header.node_id = 6 cm.header.origin.id = 1 cm.header.origin.host = self.host cm.header.origin.port = self.port cm.header.time = 10000 cm.header.destination = 6 cm.ping = True print "request_ping() executing" print cm pingr = cm.SerializeToString() print "SC 133" #packed_len = struct.pack('>L', len(pingr)) return pingr
def sendData(self, data, host, port): msg_len = struct.pack('>L', len(data)) self.sd.sendall(msg_len + data) len_buf = self.receiveMsg(self.sd, 4) msg_in = self.receiveMsg(self.sd, len_buf) r = pipe_pb2.CommandMessage() r.ParseFromString(msg_in) self.sd.close return r
def convChunkedMsg(self, filename, filecontent, noofchunks, chunkId,req): cm = pipe_pb2.CommandMessage() cm.globalHeader.cluster_id =3 cm.globalHeader.time = 10000 cm.globalHeader.destination_id = 6 cm.request.requestId ="2" if(req.upper()=="WRITE"): cm.request.requestType = pipe_pb2.RequestType.Value("WRITE") if (req.upper() == "UPDATE"): cm.request.requestType = pipe_pb2.RequestType.Value("UPDATE") cm.request.fileName = filename cm.request.file.chunkId = chunkId; cm.request.file.data = filecontent cm.request.file.filename = filename cm.request.file.chunkCount = noofchunks print cm var = cm.SerializeToString() return var
def buildWriteCommandMessage(self, nodeId, time, myIp, filename, chunkCount, chunkId, fileChunk): newCommandMsg = pipe_pb2.CommandMessage() newCommandMsg.header.node_id = nodeId newCommandMsg.header.time = time newCommandMsg.message = filename newCommandMsg.filetask.file_task_type = pipe_pb2.FileTask.FileTaskType.Value( "WRITE") newCommandMsg.filetask.sender = myIp newCommandMsg.filetask.filename = filename newCommandMsg.filetask.chunk_no = chunkId newCommandMsg.filetask.chunk_counts = chunkCount newCommandMsg.filetask.chunk = fileChunk newCommandMsgString = newCommandMsg.SerializeToString() self.logger.logInfoMessage( "Client: Created a new read write message: " + newCommandMsgString) return newCommandMsgString
def deleteFile(self, name): cm = pipe_pb2.CommandMessage() cm.header.node_id = 6 cm.header.origin.id = 6 cm.header.origin.host = self.host cm.header.origin.port = self.port cm.header.time = 10000 #cm.message = name clmsg2 = clientMessage_pb2.Operation.Value("DEL") # b = self.chunkFile() #cm.reqMsg.data = filecontent cm.reqMsg.key = name #cm.reqMsg.seq_no = msgInt cm.reqMsg.operation = clmsg2 # cm.reqMsg = clmsg # cm.reqMsg.Value(clmsg) var = cm.SerializeToString() return var
def request_ping(): print "Start request_ping() executing" cm = pipe_pb2.CommandMessage() cm.header.node_id=1 cm.header.time=10000 cm.header.destination=2 cm.ping = True print "request_ping() executing" pingr = cm.SerializeToString() packed_len = struct.pack('>L', len(pingr)) # Sending Ping Request to the server's public port s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # host = socket.gethostname() # Testing on own computer # port = 5570 # Public Port s.connect(("127.0.0.1", 4668)) # Prepending the length field and sending s.sendall(packed_len + pingr) s.close()