def init(self, buffer_id, reporting=None, *args, **kwargs):
        self.db_name = buffer_id
        self.db_path = os.path.join(os.path.abspath(os.path.curdir), self.db_name + ".sq3")
        self.db = adbapi.ConnectionPool('sqlite3', self.db_path, check_same_thread=False)
        self._pushed_values = 0
        self._popped_values = 0
        self._latest_timestamp = 0
        self._value = None
        self._changed = None
        self._statlogging = None

        def ready(length):
            def log_stats():
                _log.info("{} : pushed {}, popped {} (latest timestamp: {}) ".format(self.db_name, self._pushed_values, self._popped_values, self._latest_timestamp))
                self._statlogging.reset()

            self._changed = True # Something has changed, need to check if readable
            # install timer to report on pushing/popping
            if reporting:
                self._statlogging= async.DelayedCall(reporting, log_stats)
            self.scheduler_wakeup()

        def create(db):
            # Create simple queue table. Using TEXT unless there is a reason not to.
            db.execute("CREATE TABLE IF NOT EXISTS queue (value BLOB)")

        def error(e):
            _log.error("Error initializing queue {}: {}".format(self.db_name, e))

        q = self.db.runInteraction(create)
        q.addCallback(ready)
        q.addErrback(error)