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

Reply via email to