# File lib/core/connection.rb, line 126
    def apply opts
      # NOTE: Only connection options are set here. Transport options are set
      # with {Transport#apply} from the connection_driver (or in
      # on_connection_bound if not using a connection_driver)
      @container = opts[:container]
      cid = opts[:container_id] || (@container && @container.id) || SecureRandom.uuid
      cid = cid.to_s if cid.is_a? Symbol # Allow symbols as container name
      Cproton.pn_connection_set_container(@impl, cid)
      Cproton.pn_connection_set_user(@impl, opts[:user]) if opts[:user]
      Cproton.pn_connection_set_password(@impl, opts[:password]) if opts[:password]
      Cproton.pn_connection_set_hostname(@impl, opts[:virtual_host]) if opts[:virtual_host]
      @link_prefix = opts[:link_prefix] || cid
      Codec::Data.from_object(Cproton.pn_connection_offered_capabilities(@impl),
                              Types.symbol_array(opts[:offered_capabilities]))
      Codec::Data.from_object(Cproton.pn_connection_desired_capabilities(@impl),
                              Types.symbol_array(opts[:desired_capabilities]))
      Codec::Data.from_object(Cproton.pn_connection_properties(@impl),
                              Types.symbol_keys(opts[:properties]))
    end