Boa tarde,
Estou tendo dificuldades com um código (resumido abaixo), pois o mesmo está executando as condicionais if/else antes de terminar de executar a função [color=red]triggerCaptcha(status, rcd, true)[/color];
[code]
protected static Map<instanciaUsuario, BotEye> _activeEyes;
public boolean reportStatus (…)
{
…
triggerCaptcha(status, rcd, true); //essa função é executada porém antes de terminar completamente o código já executa o if seguinte.
if (condicao for verdadeira) //esse if eu quero que execute apenas quando de fato toda e qualquer operação anterior já tiver sido concluída.
{
logout();
}
else
{
...
}
return true
}[/code]
aqui alguns detalhes da função triggercaptcha, que exibe um html com algumas informações e um captcha para ser preenchido [color=red]em até 30seg[/color] (valor da variável [color=green]seconds[/color]).
private static void triggerCaptcha(usuario, rcd, Effect)
{
HtmlMessage.setHtml("msg do html contendo o captcha");
usuario.sendPacket( HtmlMessage );
if (Effect)
{
usuario.setIsImmobilized(true);
usuario.setIsInvul(true);
_activeEyes.put(usuario, new BotEye(usuario, rcd, seconds));
}
}
detalhes do boteye.
[code]private final static class BotEye implements Runnable
{
private ScheduledFuture<?> _task;
private int _delay;
public ReportedCharData _rcd;
private instanciaUsuario _usuario;
public BotEye(usuario, rcd, delay) {
_usuario = usuario;
_delay = delay;
_rcd = rcd;
run();
}
@Override
public void run() {
if (_delay < 1) {
blablabla...
return;
}
handleTick();
_task = ThreadPoolManager.getInstance().scheduleGeneral(this, 1000);
_delay--;
}
public void cancel() {
if (_task != null) {
_task.cancel(true);
}
}
private void handleTick() {
switch (_delay) {
case 30:
_usuario.sendMessage("falta 30seg");
break;
case 10:
_usuario.sendMessage("falta 10seg");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
_usuario.sendMessage("falta 1seg");
break;
}
}
}[/code]
Como faço para que de fato as condições if/else sejam apenas executadas após o usuário terminar de responder o captcha??