docs: def add_measurement(measurement):
      """Add measurement data to the submission buffer for eventual writing to
      InfluxDB.
  
      Example:
  
      .. code:: python
  
          import sprockets_influxdb as influxdb
  
          measurement = influxdb.Measurement('example', 'measurement-name')
          measurement.set_tag('foo', 'bar')
          measurement.set_field('baz', 1.05)
  
          influxdb.add_measurement(measurement)
  
      :param :class:`~sprockets_influxdb.Measurement` measurement: The
          measurement to add to the buffer for submission to InfluxDB.
  
      """
      global _buffer_size
  
      if not _enabled:
          LOGGER.debug('Discarding measurement for %s while not enabled',
                       measurement.database)
          return
  
      if _stopping:
          LOGGER.warning('Discarding measurement for %s while stopping',
                         measurement.database)
          return
  
      if _buffer_size > _max_buffer_size:
          LOGGER.warning('Discarding measurement due to buffer size limit')
          return
  
      if not measurement.fields:
          raise ValueError('Measurement does not contain a field')
  
      if measurement.database not in _measurements:
          _measurements[measurement.database] = []
  
      value = measurement.marshall()
      _measurements[measurement.database].append(value)
  
      # Ensure that len(measurements) < _trigger_size are written
      if not _timeout:
          if (_batch_future and _batch_future.done()) or not _batch_future:
              _start_timeout()
  
      # Check to see if the batch should be triggered
      _buffer_size = _pending_measurements()
      if _buffer_size >= _trigger_size:
          _trigger_batch_write()