def send_to_graphite(self, metric, value, timestamp=None):
        """
        Inner store a new metric and flush to Graphite if the flush threshold is reached.

        If no timestamp is provided, get the current time for the metric timestam.

        :param metric: metric name in dotted format
        :type metric: str
        :param value:
        :type value: float
        :param timestamp: metric timestamp
        :type timestamp: int
        """
        # Manage Graphite part
        if not self.statsd_enabled or not self.carbon:
            return

        if timestamp is None:
            timestamp = int(time.time())

        self.my_metrics.append(('.'.join([self.statsd_prefix, self.name, metric]),
                                (timestamp, value)))
        if self.metrics_count >= self.metrics_flush_count:
            self.carbon.add_data_list(self.my_metrics)
            self.flush()