Exemplo n.º 1
0
    def p__killContender(self, key, index, owner):
        continueFlag = 1
        retval = 0

        # Do we have the key in the master key list?
        self.p__masterKL.lock()
        index_list = self.p__masterKL.find(key)
        if index_list is None:
            continueFlag = 0
        self.p__masterKL.unlock()

        # Do we have the index in the index list?
        if continueFlag:
            index_list.lock()
            contender_list = index_list.find(index)
            if contender_list is None:
                continueFlag = 0
            index_list.unlock()

            # Where is this particular contender?
        if continueFlag:
            c = contender.contender(key=key, index=index, owner=owner)
            contender_list.lock()
            retval = contender_list.release(c)
            contender_list.unlock()

        return retval
Exemplo n.º 2
0
    def renew(self, dataStream):
        self.p__ac.increment("lockRenewals")
        key = self.getkey(dataStream)
        index = self.getindex(dataStream)
        owner = self.getowner(dataStream)

        continueFlag = 1
        retval = 0

        # Do we have the key in the master key list?
        self.p__masterKL.lock()
        index_list = self.p__masterKL.find(key)
        if index_list is None:
            continueFlag = 0
        self.p__masterKL.unlock()

        # Do we have the index in the index list?
        if continueFlag:
            index_list.lock()
            contender_list = index_list.find(index)
            if contender_list is None:
                continueFlag = 0
            index_list.unlock()

            # Where is this particular contender?
        if continueFlag:
            c = contender.contender(key=key, index=index, owner=owner)
            contender_list.lock()
            retval = contender_list.renew(c)
            contender_list.unlock()

        dataStream.send(pack("!H", retval & 0xFFFF))
Exemplo n.º 3
0
    def contLoc(self, dataStream):
        self.p__ac.increment("contenderLookups")
        key = self.getkey(dataStream)
        index = self.getindex(dataStream)
        owner = self.getowner(dataStream)

        # Do we have the key in the master key list?
        self.p__masterKL.lock()
        index_list = self.p__masterKL.setdefault(key)
        self.p__masterKL.unlock()

        # Do we have the index in the index list?
        index_list.lock()
        contender_list = index_list.setdefault(index)
        index_list.unlock()

        # Where is this particular contender?
        c = contender.contender(key=key, index=index, owner=owner)
        contender_list.lock()
        retval = contender_list.getPosition(c, add=1)
        contender_list.unlock()

        dataStream.send(pack("!H", retval & 0xFFFF))
Exemplo n.º 4
0
    def gimme(self, dataStream):
        self.p__ac.increment("lockRequests")
        key = self.getkey(dataStream)
        index = self.getindex(dataStream)
        owner = self.getowner(dataStream)
        TTL = self.getTTL(dataStream)
        TTW = self.getTTW(dataStream)
        priority = self.getPriority(dataStream)

        self.p__masterKL.lock()
        index_list = self.p__masterKL.setdefault(key)
        self.p__masterKL.unlock()

        index_list.lock()
        contender_list = index_list.setdefault(index)
        index_list.unlock()

        # Add the contender
        c = contender.contender(key=key, index=index, owner=owner, TTL=TTL, TTW=TTW, priority=priority)
        contender_list.lock()
        retval = contender_list.add(c)
        contender_list.unlock()

        dataStream.send(pack("!H", retval & 0xFFFF))