def apply opts
@container = opts[:container]
cid = opts[:container_id] || (@container && @container.id) || SecureRandom.uuid
cid = cid.to_s if cid.is_a? Symbol
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