@Override public String next(final ProtocolCodecs<ClientState> codecs, final ClientState sessionState) { if (isCompleted()) { Set<String> exts = sessionState.getExtensions(); boolean pipelining = exts.contains(SMTPExtensions.PIPELINING); boolean enhancedCodes = exts.contains(SMTPExtensions.ENHANCEDSTATUSCODES); if (pipelining) { codecs.register( ProtocolState.MAIL.name(), new PipeliningSendEnvelopCodec(this.iobuffers, enhancedCodes)); codecs.register( ProtocolState.DATA.name(), new SendDataCodec(this.iobuffers, enhancedCodes)); } if (useAuth) { return ProtocolState.AUTH.name(); } else { return ProtocolState.MAIL.name(); } } else { return null; } }
@Override public String next(final ProtocolCodecs<ServerState> codecs, final ServerState sessionState) { if (isCompleted()) { if (sessionState.isTerminated()) { return ProtocolState.QUIT.name(); } return ProtocolState.DATA.name(); } else { return null; } }