I need non-blocking means to wait for client request to complete.
With sshd-core-1.1.0 and reflection I can get to gracefulFuture field of
AbstractChannel and register a listener:
...
s_closeFutureField =
AbstractChannel.class.getDeclaredField( "gracefulFuture" );
s_closeFutureField.setAccessible( true );
...
timeout = commandEndTime - System.currentTimeMillis();
DefaultCloseFuture closeFuture;
try
{
closeFuture = (DefaultCloseFuture)
s_closeFutureField.get( channel );
}
catch ( IllegalAccessException e )
{
throw new RuntimeException( e );
}
//CloseFuture closeFuture = channel.getCloseFuture();
CloseListener closeListener = new CloseListener( workItem,
sc, channel, out );
AlarmHandler alarmHandler = new AlarmHandler( closeListener );
Alarm alarm = getContext().getAlarmFactory().getAlarm(
alarmHandler, timeout );
closeListener.setAlarm( alarm );
closeFuture.addListener( closeListener );
sc = null;
return workItem.makeSuspend( "Waiting..." );
Could getCloseFuture() method be added to AbstractChannel?
Thanks,
Mike
--
Michael Bean (Mike)
Nokia - US
AAA Product Group
3461 Robin Ln, Ste 1
Cameron Park, CA 95682
Email: [email protected]
Phone: 1 530 350 6564
Fax: 1 530 676 3442