import logging
import os

from coolamqp.clustering import Cluster
from coolamqp.objects import NodeDefinition

logger = logging.getLogger(__name__)

NODE = NodeDefinition(os.environ.get('AMQP_HOST', '127.0.0.1'), 'guest', 'guest', heartbeat=20)
logging.basicConfig(level=logging.DEBUG)


def connect(on_fail=lambda: None, log_frames=None):
    def _on_fail():
        on_fail.put('fail')

    amqp = Cluster([NODE], on_fail=_on_fail, log_frames=log_frames)
    amqp.start(wait=True)
    return amqp


class LogFramesToFile:
    def __init__(self, path):
        self.file = open(path, 'w')

    def close(self):
        self.file.close()

    def on_frame(self, timestamp, frame, direction):
        try:
            self.file.write('%s %s %s\n' % (timestamp, frame, direction))
            self.file.flush()
        except ValueError:
            pass

queue_names = (str(v) for v in range(100))