def register(self, uuid, value):
        self.start()

        if uuid in self.shared_uuid_fn_dict:
            raise RuntimeError('broadcast %s has already registered' % uuid)
        blocks, size, block_map = self.to_blocks(uuid, value)
        _download_manager.register_blocks(uuid, blocks)
        self._update_sources(uuid, block_map)
        self.cache.put(uuid, value)
        return size