"""
This module specializes Processor to store the timestamp and value of messages
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import collections
import sys

from .processor import Processor

class DataBuffer(Processor):
    """
    Provides a Processor to store signal data (value and associated timestamp)
    """

    def __init__(self, queue, signals):
        """
        Constructs a DataBuffer

        :param queue: Message queue
        :param signals: List of Signal instances
        """
        super(DataBuffer, self).__init__(queue)
        self._shutdown = False
        self.signals = signals

    def process(self, msg):
        """
        Update all signals with their common timestamp,
        and their specific values

        :param msg: Message filtered by player.
        """
        time = msg[0]
        values = msg[1:]
        for idx,signal in enumerate(self.signals):
            signal.append(time,values[idx])
