package org.infinispan.client.hotrod.impl.operations; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.infinispan.client.hotrod.configuration.ClientIntelligence; import org.infinispan.client.hotrod.impl.protocol.Codec; import org.infinispan.client.hotrod.impl.protocol.HeaderParams; import org.infinispan.client.hotrod.impl.transport.Transport; import net.jcip.annotations.Immutable; /** * Obtains a list of SASL authentication mechanisms supported by the server * * @author Tristan Tarrant * @since 7.0 */ @Immutable public class AuthMechListOperation extends HotRodOperation { private final Transport transport; public AuthMechListOperation(Codec codec, AtomicInteger topologyId, ClientIntelligence clientIntelligence, Transport transport) { super(codec, 0, clientIntelligence, DEFAULT_CACHE_NAME_BYTES, topologyId); this.transport = transport; } @Override public List<String> execute() { List<String> result; HeaderParams params = writeHeader(transport, AUTH_MECH_LIST_REQUEST); transport.flush(); readHeaderAndValidate(transport, params); int mechCount = transport.readVInt(); result = new ArrayList<String>(); for (int i = 0; i < mechCount; i++) { result.add(transport.readString()); } return result; } }