in src/sessionmanagerplugin/session/shellsession/shellsession.go [99:134]
func (s *ShellSession) handleTerminalResize(log log.T) {
var (
width int
height int
inputSizeData []byte
err error
)
go func() {
for {
// If running from IDE GetTerminalSizeCall will not work. Supply a fixed width and height value.
if width, height, err = GetTerminalSizeCall(int(os.Stdout.Fd())); err != nil {
width = 300
height = 100
log.Errorf("Could not get size of the terminal: %s, using width %d height %d", err, width, height)
}
if s.SizeData.Rows != uint32(height) || s.SizeData.Cols != uint32(width) {
sizeData := message.SizeData{
Cols: uint32(width),
Rows: uint32(height),
}
s.SizeData = sizeData
if inputSizeData, err = json.Marshal(sizeData); err != nil {
log.Errorf("Cannot marshall size data: %v", err)
}
log.Debugf("Sending input size data: %s", inputSizeData)
if err = s.DataChannel.SendInputDataMessage(log, message.Size, inputSizeData); err != nil {
log.Errorf("Failed to Send size data: %v", err)
}
}
// repeating this loop for every 500ms
time.Sleep(ResizeSleepInterval)
}
}()
}