package org.jboss.as.undertow.handlers;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.RequestLimitingHandler;
import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.controller.SimpleAttributeDefinition;
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.undertow.AbstractHandlerResourceDefinition;
import org.jboss.dmr.ModelNode;
import org.jboss.dmr.ModelType;
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
*/
public class ConnectionLimitHandler extends AbstractHandlerResourceDefinition {
private static SimpleAttributeDefinition HIGH_WATER_MARK = new SimpleAttributeDefinitionBuilder("high-water-mark", ModelType.INT)
.setAllowExpression(true)
.setAllowNull(true)
.build();
private static SimpleAttributeDefinition LOW_WATER_MARK = new SimpleAttributeDefinitionBuilder("low-water-mark", ModelType.INT)
.setAllowExpression(true)
.setAllowNull(true)
.build();
/*
<connection-limit high-water-mark="100" low-water-mark="50"/>
*/
public ConnectionLimitHandler() {
super("connection-limit");
}
@Override
public AttributeDefinition[] getAttributes() {
return new AttributeDefinition[]{HIGH_WATER_MARK, LOW_WATER_MARK};
}
@Override
public HttpHandler createHandler(HttpHandler next, OperationContext context, ModelNode model) throws OperationFailedException {
return new RequestLimitingHandler(1000, next);
}
}