func()

in src/sessionmanagerplugin/session/shellsession/shellsession_unix.go [62:86]


func (s *ShellSession) handleKeyboardInput(log log.T) (err error) {
	var (
		stdinBytesLen int
	)

	//handle double echo and disable input buffering
	s.disableEchoAndInputBuffering()

	stdinBytes := make([]byte, StdinBufferLimit)
	reader := bufio.NewReader(os.Stdin)
	for {
		if stdinBytesLen, err = reader.Read(stdinBytes); err != nil {
			log.Errorf("Unable read from Stdin: %v", err)
			break
		}

		if err = s.Session.DataChannel.SendInputDataMessage(log, message.Output, stdinBytes[:stdinBytesLen]); err != nil {
			log.Errorf("Failed to send UTF8 char: %v", err)
			break
		}
		// sleep to limit the rate of data transfer
		time.Sleep(time.Millisecond)
	}
	return
}