Skip to content
Snippets Groups Projects
csvtrace.py 828 B
Newer Older
  • Learn to ignore specific revisions
  • Jarrod Pas's avatar
    Jarrod Pas committed
    import csv
    
    from .trace import Trace
    
    class CSVTrace(Trace):
        def __init__(self, path=None):
            self.file = open(path)
            self.reader = csv.reader(self.file)
    
            time, a, b, state = next(self.reader)
            if not time == 'time' and a == 'a' and b == 'b' and state == 'state':
                raise ValueError('improperly formatted csv')
    
            # first row of data is csv is [duration, -1, -1, nodes]
            duration, _, _, nodes = map(int, next(self.reader))
            super().__init__(duration, nodes)
    
        def process(self, network):
            ''''''
            env = self.env
    
            for row in self.reader:
                time, a, b, state = map(int, row)
                if time > env.now:
                    yield env.timeout(time - env.now)
                network.set_link(a, b, bool(state))
    
            self.file.close()