def start(connection = nil)
if connection && connection.features.op_msg_enabled?
selector = LOGIN.merge(payload: payload, mechanism: LDAP::MECHANISM)
selector[Protocol::Msg::DATABASE_IDENTIFIER] = Auth::EXTERNAL
cluster_time = connection.mongos? && connection.cluster_time
selector[Operation::CLUSTER_TIME] = cluster_time if cluster_time
Protocol::Msg.new([], {}, selector)
else
Protocol::Query.new(
Auth::EXTERNAL,
Database::COMMAND,
LOGIN.merge(payload: payload, mechanism: LDAP::MECHANISM),
limit: -1
)
end
end