def process_streamer(self, streamer, callback=None):
        """Start streaming a streamer.

        Args:
            streamer (DataStreamer): The streamer itself.
            callback (callable): An optional callable that will be called as:
                callable(index, success, highest_id_received_from_other_side)
        """

        index = streamer.index

        if index in self._in_progress_streamers:
            raise InternalError("You cannot add a streamer again until it has finished streaming.")

        queue_item = QueuedStreamer(streamer, callback)
        self._in_progress_streamers.add(index)

        self._logger.debug("Streamer %d: queued to send %d readings", index, queue_item.initial_count)
        self._queue.put_nowait(queue_item)
Start streaming a streamer.

        Args:
            streamer (DataStreamer): The streamer itself.
            callback (callable): An optional callable that will be called as:
                callable(index, success, highest_id_received_from_other_side)