code: def send(self, cumulative_counters=None, gauges=None, counters=None):
          
          if not gauges and not cumulative_counters and not counters:
              return
  
          data = {
              'cumulative_counter': cumulative_counters,
              'gauge': gauges,
              'counter': counters,
          }
          _logger.debug('Sending datapoints to SignalFx: %s', data)
  
          for metric_type, datapoints in data.items():
              if not datapoints:
                  continue
              if not isinstance(datapoints, list):
                  raise TypeError('Datapoints not of type list %s', datapoints)
              for datapoint in datapoints:
                  self._add_extra_dimensions(datapoint)
                  self._add_to_queue(metric_type, datapoint)
  
          # Ensure the sending thread is running.
          self._start_thread()
docs: Send the given metrics to SignalFx.
  
          Args:
              cumulative_counters (list): a list of dictionaries representing the
                  cumulative counters to report.
              gauges (list): a list of dictionaries representing the gauges to
                  report.
              counters (list): a list of dictionaries representing the counters
                  to report.