#!/usr/bin/env python

import argparse
import sys
import time
from contextlib import closing
from itertools import count
from vsqs.queue import QueueManager

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Produces messages and puts '
                                                 'them on a queue.')
    parser.add_argument('-d', '--dir', default='.',
                        help='directory containing the queue')
    parser.add_argument('-c', '--capacity', type=int,
                        help='maximum queue capacity (pump will block when '
                             'exceeded')
    parser.add_argument('queue')
    cfg = parser.parse_args()

    with closing(QueueManager(cfg.dir)) as qm:
        with closing(qm.get_queue(cfg.queue, capacity=cfg.capacity)) as q:
            start, first = time.time(), 0
            for i in count(1):
                q.publish(str(i).encode('utf-8'))
                if i % 50 == 0:
                    end = time.time()
                    sys.stdout.write('\r%d (%.2f/s)' %
                                     (i, float(i - first) / (end - start)))
                    sys.stdout.flush()
                    start, first = end, i
