398467 Servlet 3.1 Non Blocking IO
use nested classes for better stack trace
This commit is contained in:
parent
7303341ecf
commit
93faa8147b
|
@ -227,7 +227,7 @@ public abstract class AbstractConnection implements Connection
|
||||||
return String.format("%s@%x{%s}", getClass().getSimpleName(), hashCode(), _state.get());
|
return String.format("%s@%x{%s}", getClass().getSimpleName(), hashCode(), _state.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean next(State state, State next)
|
public boolean next(State state, State next)
|
||||||
{
|
{
|
||||||
if (next==null)
|
if (next==null)
|
||||||
return true;
|
return true;
|
||||||
|
@ -241,6 +241,125 @@ public abstract class AbstractConnection implements Connection
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class IdleState extends State
|
||||||
|
{
|
||||||
|
private IdleState()
|
||||||
|
{
|
||||||
|
super("IDLE");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State fillInterested()
|
||||||
|
{
|
||||||
|
return FILL_INTERESTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final class FillInterestedState extends State
|
||||||
|
{
|
||||||
|
private FillInterestedState()
|
||||||
|
{
|
||||||
|
super("FILL_INTERESTED");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnter(AbstractConnection connection)
|
||||||
|
{
|
||||||
|
connection.getEndPoint().fillInterested(connection._readCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State fillInterested()
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public State onFillable()
|
||||||
|
{
|
||||||
|
return FILLING;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State onFailed()
|
||||||
|
{
|
||||||
|
return IDLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final class RefillingState extends State
|
||||||
|
{
|
||||||
|
private RefillingState()
|
||||||
|
{
|
||||||
|
super("REFILLING");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State fillInterested()
|
||||||
|
{
|
||||||
|
return FILLING_FILL_INTERESTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public State onFilled()
|
||||||
|
{
|
||||||
|
return IDLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final class FillingFillInterestedState extends State
|
||||||
|
{
|
||||||
|
private FillingFillInterestedState(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State fillInterested()
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
State onFilled()
|
||||||
|
{
|
||||||
|
return FILL_INTERESTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final class FillingState extends State
|
||||||
|
{
|
||||||
|
private FillingState()
|
||||||
|
{
|
||||||
|
super("FILLING");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnter(AbstractConnection connection)
|
||||||
|
{
|
||||||
|
if (connection._executeOnfillable)
|
||||||
|
connection.getExecutor().execute(connection._runOnFillable);
|
||||||
|
else
|
||||||
|
connection._runOnFillable.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
State fillInterested()
|
||||||
|
{
|
||||||
|
return FILLING_FILL_INTERESTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public State onFilled()
|
||||||
|
{
|
||||||
|
return IDLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class State
|
public static class State
|
||||||
{
|
{
|
||||||
private final String _name;
|
private final String _name;
|
||||||
|
@ -281,94 +400,15 @@ public abstract class AbstractConnection implements Connection
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static final State IDLE=new State("IDLE")
|
public static final State IDLE=new IdleState();
|
||||||
{
|
|
||||||
@Override
|
|
||||||
State fillInterested()
|
|
||||||
{
|
|
||||||
return FILL_INTERESTED;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final State FILL_INTERESTED=new State("FILL_INTERESTED")
|
public static final State FILL_INTERESTED=new FillInterestedState();
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onEnter(AbstractConnection connection)
|
|
||||||
{
|
|
||||||
connection.getEndPoint().fillInterested(connection._readCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static final State FILLING=new FillingState();
|
||||||
State fillInterested()
|
|
||||||
{
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static final State REFILLING=new RefillingState();
|
||||||
public State onFillable()
|
|
||||||
{
|
|
||||||
return FILLING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static final State FILLING_FILL_INTERESTED=new FillingFillInterestedState("FILLING_FILL_INTERESTED");
|
||||||
State onFailed()
|
|
||||||
{
|
|
||||||
return IDLE;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final State FILLING=new State("FILLING")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onEnter(AbstractConnection connection)
|
|
||||||
{
|
|
||||||
if (connection._executeOnfillable)
|
|
||||||
connection.getExecutor().execute(connection._runOnFillable);
|
|
||||||
else
|
|
||||||
connection._runOnFillable.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
State fillInterested()
|
|
||||||
{
|
|
||||||
return FILLING_FILL_INTERESTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public State onFilled()
|
|
||||||
{
|
|
||||||
return IDLE;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final State REFILLING=new State("REFILLING")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
State fillInterested()
|
|
||||||
{
|
|
||||||
return FILLING_FILL_INTERESTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public State onFilled()
|
|
||||||
{
|
|
||||||
return IDLE;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final State FILLING_FILL_INTERESTED=new State("FILLING_FILL_INTERESTED")
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
State fillInterested()
|
|
||||||
{
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
State onFilled()
|
|
||||||
{
|
|
||||||
return FILL_INTERESTED;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public class NestedState extends State
|
public class NestedState extends State
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue