Apache SSHD 간단 분석 코드


테스트 코드만 봐도 바로 간단하게 쓸 수는 있는데 어지간하면 스레드 따로 안 돌리고 콜백 받아서 할 방법이 있나 찾아보고 있었는데 대충 봐서는 답이 없는 것 같은데..

핵심 포인트는 org.apache.sshd.server.channel.ChannelSession 클래스인데 prepareCommand() 에서 in, out, err 스트림을 만들고 사용자 정의 Command 객체에 넘겨준다. AbstractChannel.handleData()에서 ChannelSession.doWriteData() 호출하면 shellIn을 통해서 in 스트림에 데이터 공급.. 근데 shellIn이 데이터 전달할 때 받는 놈 넣는 놈 따로 큐를 통해서 동기화 하기 때문에 이 지점을 가로챌 수 없으면 말짱 황..

소스 뜯었다간 저쪽 버전 업할 때마다 헤매야 될거고 -_-
그냥 곱게 원작자 의도한대로 쓰는 수 밖에 없겠다.

크라켄 콘솔에서도 저런 식으로 동기화 하는 지점이 있긴 한데..
ConsoleInputStream.supplyInput()에서 BlockingQueue에 넣고 있지..
이건 뭐 내 쪽을 뜯던가 별 수 있나..

Command 구현을 잘 ScriptContext에 맞추면 될 것 같은데..

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://www.xeraph.com/tb/5282294 [도움말]

덧글

댓글 입력 영역