def __init__(self, **kwargs):
        '''
        Initialize the connection.
        '''
        self._debug = kwargs.get('debug', False)
        self._logger = kwargs.get('logger', root_logger)

        self._user = kwargs.get('user', 'guest')
        self._password = kwargs.get('password', 'guest')
        self._host = kwargs.get('host', 'localhost')
        self._port = kwargs.get('port', 5672)
        self._vhost = kwargs.get('vhost', '/')

        self._connect_timeout = kwargs.get('connect_timeout', 5)
        self._sock_opts = kwargs.get('sock_opts')
        self._sock = None
        self._heartbeat = kwargs.get('heartbeat')
        self._open_cb = kwargs.get('open_cb')
        self._close_cb = kwargs.get('close_cb')

        self._login_method = kwargs.get('login_method', 'AMQPLAIN')
        self._locale = kwargs.get('locale', 'en_US')
        self._client_properties = kwargs.get('client_properties')

        self._properties = LIBRARY_PROPERTIES.copy()
        if self._client_properties:
            self._properties.update(self._client_properties)

        self._closed = False
        self._connected = False
        self._close_info = {
            'reply_code': 0,
            'reply_text': 'first connect',
            'class_id': 0,
            'method_id': 0
        }

        # Not sure what's better here, setdefaults or require the caller to
        # pass the whole thing in.
        self._class_map = kwargs.get('class_map', {}).copy()
        self._class_map.setdefault(20, ChannelClass)
        self._class_map.setdefault(40, ExchangeClass)
        self._class_map.setdefault(50, QueueClass)
        self._class_map.setdefault(60, BasicClass)
        self._class_map.setdefault(90, TransactionClass)

        self._channels = {
            0: ConnectionChannel(self, 0, {})
        }

        self._last_octet_time = None

        # Login response seems a total hack of protocol
        # Skip the length at the beginning
        login_response = Writer()
        login_response.write_table(
            {'LOGIN': self._user, 'PASSWORD': self._password})
        self._login_response = login_response.buffer()[4:]

        self._channel_counter = 0
        self._channel_max = 65535
        self._frame_max = 65535

        self._frames_read = 0
        self._frames_written = 0

        # Default to the socket strategy
        transport = kwargs.get('transport', 'socket')
        if not isinstance(transport, Transport):
            if transport == 'event':
                from haigha.transports.event_transport import EventTransport
                self._transport = EventTransport(self)
            elif transport == 'gevent':
                from haigha.transports.gevent_transport import GeventTransport
                self._transport = GeventTransport(self)
            elif transport == 'gevent_pool':
                from haigha.transports.gevent_transport import \
                    GeventPoolTransport
                self._transport = GeventPoolTransport(self, **kwargs)
            elif transport == 'socket':
                from haigha.transports.socket_transport import SocketTransport
                self._transport = SocketTransport(self)
        else:
            self._transport = transport

        # Set these after the transport is initialized, so that we can access
        # the synchronous property
        self._synchronous = kwargs.get('synchronous', False)
        self._synchronous_connect = kwargs.get(
            'synchronous_connect', False) or self.synchronous

        self._output_frame_buffer = []
        self.connect(self._host, self._port)
def __init__ ( self , ** kwargs ) : self . _debug = kwargs . get ( 'debug' , False ) self . _logger = kwargs . get ( 'logger' , root_logger ) self . _user = kwargs . get ( 'user' , 'guest' ) self . _password = kwargs . get ( 'password' , 'guest' ) self . _host = kwargs . get ( 'host' , 'localhost' ) self . _port = kwargs . get ( 'port' , 5672 ) self . _vhost = kwargs . get ( 'vhost' , '/' ) self . _connect_timeout = kwargs . get ( 'connect_timeout' , 5 ) self . _sock_opts = kwargs . get ( 'sock_opts' ) self . _sock = None self . _heartbeat = kwargs . get ( 'heartbeat' ) self . _open_cb = kwargs . get ( 'open_cb' ) self . _close_cb = kwargs . get ( 'close_cb' ) self . _login_method = kwargs . get ( 'login_method' , 'AMQPLAIN' ) self . _locale = kwargs . get ( 'locale' , 'en_US' ) self . _client_properties = kwargs . get ( 'client_properties' ) self . _properties = LIBRARY_PROPERTIES . copy ( ) if self . _client_properties : self . _properties . update ( self . _client_properties ) self . _closed = False self . _connected = False self . _close_info = { 'reply_code' : 0 , 'reply_text' : 'first connect' , 'class_id' : 0 , 'method_id' : 0 } self . _class_map = kwargs . get ( 'class_map' , { } ) . copy ( ) self . _class_map . setdefault ( 20 , ChannelClass ) self . _class_map . setdefault ( 40 , ExchangeClass ) self . _class_map . setdefault ( 50 , QueueClass ) self . _class_map . setdefault ( 60 , BasicClass ) self . _class_map . setdefault ( 90 , TransactionClass ) self . _channels = { 0 : ConnectionChannel ( self , 0 , { } ) } self . _last_octet_time = None login_response = Writer ( ) login_response . write_table ( { 'LOGIN' : self . _user , 'PASSWORD' : self . _password } ) self . _login_response = login_response . buffer ( ) [ 4 : ] self . _channel_counter = 0 self . _channel_max = 65535 self . _frame_max = 65535 self . _frames_read = 0 self . _frames_written = 0 transport = kwargs . get ( 'transport' , 'socket' ) if not isinstance ( transport , Transport ) : if transport == 'event' : from haigha . transports . event_transport import EventTransport self . _transport = EventTransport ( self ) elif transport == 'gevent' : from haigha . transports . gevent_transport import GeventTransport self . _transport = GeventTransport ( self ) elif transport == 'gevent_pool' : from haigha . transports . gevent_transport import GeventPoolTransport self . _transport = GeventPoolTransport ( self , ** kwargs ) elif transport == 'socket' : from haigha . transports . socket_transport import SocketTransport self . _transport = SocketTransport ( self ) else : self . _transport = transport self . _synchronous = kwargs . get ( 'synchronous' , False ) self . _synchronous_connect = kwargs . get ( 'synchronous_connect' , False ) or self . synchronous self . _output_frame_buffer = [ ] self . connect ( self . _host , self . _port )
Initialize the connection.