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;
}
}