'Store a persistent reference to a local object and map its
id() to a generated, session-unique ID.
@param object: a local object
@return: the generated ID'

def registerReference(self, object):

    assert (object is not None)
    puid = object.processUniqueID()
    luid = self.luids.get(puid)
    if (luid is None):
        if (len(self.localObjects) > MAX_BROKER_REFS):
            self.maxBrokerRefsViolations = (self.maxBrokerRefsViolations + 1)
            if (self.maxBrokerRefsViolations > 3):
                self.transport.loseConnection()
                raise Error('Maximum    PB    reference    count    exceeded.        Goodbye.')
            raise Error('Maximum    PB    reference    count    exceeded.')
        luid = self.newLocalID()
        self.localObjects[luid] = Local(object)
        self.luids[puid] = luid
    else:
        self.localObjects[luid].incref()
    return luid
