"""Continuous read-only quote collector and local stop monitor, never entry signals."""
import argparse
import json
import sys
import time
from engine import Engine, Rejected
from alpaca_reader import crypto_quotes

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--once', action='store_true')
    args = parser.parse_args()
    engine = Engine()
    while True:
        try:
            quotes = crypto_quotes()
            if engine.status()['account_initialized']:
                engine.mark(quotes)
            engine.heartbeat(status='FEED_OK')
            print(json.dumps({'worker':'crypto-collector', 'status':'FEED_OK', 'trial_started':False}), flush=True)
        except (Rejected, OSError, KeyError, TypeError):
            engine.heartbeat(status='FEED_ERROR')
            print(json.dumps({'worker':'crypto-collector', 'status':'FEED_ERROR', 'entries_disabled':True}), file=sys.stderr, flush=True)
            if args.once:
                return 1
        if args.once:
            return 0
        time.sleep(15)

if __name__ == '__main__':
    sys.exit(main())
