# File lib/bunny/client08.rb, line 185
                def open_connection
                        send_frame(
        Qrack::Protocol::Connection::StartOk.new(
          {:platform => 'Ruby', :product => 'Bunny', :information => 'http://github.com/celldee/bunny', :version => VERSION},
          'AMQPLAIN',
          {:LOGIN => @user, :PASSWORD => @pass},
          'en_US'
        )
      )

      frame = next_frame
                        raise Bunny::ProtocolError, "Connection failed - user: #{@user}" if frame.nil?
                        
                        method = frame.payload

      if method.is_a?(Qrack::Protocol::Connection::Tune)
        send_frame(
          Qrack::Protocol::Connection::TuneOk.new( :channel_max => @channel_max, :frame_max => @frame_max, :heartbeat => @heartbeat)
        )
      end

      send_frame(
        Qrack::Protocol::Connection::Open.new(:virtual_host => @vhost, :capabilities => '', :insist => @insist)
      )

      case method = next_method
      when Qrack::Protocol::Connection::OpenOk
        :ok
      when Qrack::Protocol::Connection::Redirect
                                raise Bunny::ConnectionError, "Cannot connect to the specified server - host: #{@host}, port: #{@port}" if @insist
                                
        @host, @port = method.host.split(':')
        close_socket
      else
        raise Bunny::ProtocolError, 'Cannot open connection'
      end
                end