コード例 #1
0
 def FileSearch(self, request, context):
     username = request.username
     filename = request.filename
     metadata = self.pickledbMetadataobj.getFileData(username)
     if metadata:
         if filename in metadata:
             return fileService_pb2.ack(success=True, message="File Found!")
     return fileService_pb2.ack(success=False, message="File not found")
コード例 #2
0
    def UploadFile(self, request_iterator, context):
        print("--------")
        activeIpList = self.activeNodeObj.getActiveIpsDict()
        if self.leader.isLeader():
            print("here-----")
            chunk_id = 0
            for chunk in request_iterator:
                print("In iterator")
                username = chunk.username
                filename = chunk.filename
                metadata = self.pickledbMetadataobj.getFileData(username)
                if metadata and chunk_id == 0:
                    if filename in metadata:
                        return fileService_pb2.ack(
                            success=True, message="File Already Present!")
                destination = self.nodeSelect.leastUtilizedNode()
                if destination == 9999:
                    return fileService_pb2.ack(success=False,
                                               message="No active nodes!")
                if str(destination) == str(self.serverAddress):
                    chunk_id += 1
                    self.databaseHandlerObj.insertData(
                        chunk.username, chunk.filename + str(chunk_id),
                        chunk.data)
                    self.broadcastMetadata(chunk.username, chunk.filename,
                                           str(chunk_id), str(destination))

                else:
                    chunk_id += 1
                    self.sendDataToDestination(chunk, destination, chunk_id)
            return fileService_pb2.ack(success=True, message="Saved data!")

        else:
            for request in request_iterator:
                self.databaseHandlerObj.insertData(
                    request.username, request.filename + str(request.chunk_id),
                    request.data)
                self.broadcastMetadata(request.username, request.filename,
                                       str(request.chunk_id),
                                       str(self.serverAddress))
                return fileService_pb2.ack(success=True,
                                           message="Data has been saved!")
コード例 #3
0
    def FileDelete(self, request, context):
        username = request.username
        filename = request.filename
        if self.leader.isLeader():
            metadata = self.pickledbMetadataobj.getData(username, filename)
            for item in metadata:
                if item[1] == self.serverAddress:
                    fname = filename + str(item[0])
                    self.databaseHandlerObj.deleteData(username, fname)

                else:
                    self.deleteDataFromNode(username, filename, item[0],
                                            item[1])
            self.pickledbMetadataobj.deleteData(username, filename)
            return fileService_pb2.ack(success=True, message="Data deleted!")
        else:
            self.databaseHandlerObj.deleteData(username, filename)
            self.pickledbMetadataobj.deleteData(
                str(username), filename[:-len(request.sequence_no)])
            return fileService_pb2.ack(success=True, message="Data deleted!")
コード例 #4
0
 def metadataUpdate(self, request, context):
     self.pickledbMetadataobj.insertData(request.username, request.filename,
                                         request.chunk_id,
                                         request.destination)
     return fileService_pb2.ack(success=True,
                                message="MetaData has been saved!")