#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sys, os
sys.path.append(os.path.abspath("."))
sys.path.append(os.path.abspath(".."))

import logging
import random
import socket
from optparse import OptionParser

from haigha.connection import Connection
from haigha.message import Message

parser = OptionParser(
  usage='Usage: synchronous_test [options]'
)
parser.add_option('--user', default='guest', type='string')
parser.add_option('--pass', default='guest', dest='password', type='string')
parser.add_option('--vhost', default='/', type='string')
parser.add_option('--host', default='localhost', type='string')
parser.add_option('--debug', default=0, action='count')

(options,args) = parser.parse_args()

debug = options.debug
level = logging.DEBUG if debug else logging.INFO

# Setup logging
logging.basicConfig(level=level, format="[%(levelname)s %(asctime)s] %(message)s" )
logger = logging.getLogger('haigha')

sock_opts = {
  (socket.IPPROTO_TCP, socket.TCP_NODELAY) : 1,
}
connection = Connection(logger=logger, debug=debug, 
  user=options.user, password=options.password, 
  vhost=options.vhost, host=options.host, 
  heartbeat=None,
  sock_opts=sock_opts,
  transport='socket')

ch = connection.channel()
ch.exchange.declare('foo', 'direct')
ch.queue.declare('bar')
ch.queue.bind('bar', 'foo', 'route')
ch.basic.publish(Message('hello world'), 'foo', 'route')
print 'GET:', ch.basic.get('bar')

ch.basic.publish(Message('hello world'), 'foo', 'route')
ch.basic.publish(Message('hello world'), 'foo', 'route')
print 'PURGE:', ch.queue.purge('bar')

ch.basic.publish(Message('hello world'), 'foo', 'route')
ch.basic.publish(Message('hello world'), 'foo', 'route')
print 'DELETED:', ch.queue.delete('bar')
