added initial support for qemu led state

This commit is contained in:
amit b 2018-08-20 23:03:39 +03:00
parent f19a75749b
commit 2ccc4009f4
5 changed files with 37 additions and 0 deletions

View File

@ -73,6 +73,8 @@ func (enct EncodingType) String() string {
return "EncJPEGQualityLevelPseudo1"
case EncCursorPseudo:
return "EncCursorPseudo"
case EncLedStatePseudo:
return "EncLedStatePseudo"
case EncDesktopSizePseudo:
return "EncDesktopSizePseudo"
case EncLastRectPseudo:
@ -183,6 +185,7 @@ const (
EncQEMUPointerMotionChangePseudo EncodingType = -257
EncQEMUExtendedKeyEventPseudo EncodingType = -258
EncTightPng EncodingType = -260
EncLedStatePseudo EncodingType = -261
EncExtendedDesktopSizePseudo EncodingType = -308
EncXvpPseudo EncodingType = -309
EncFencePseudo EncodingType = -312

View File

@ -0,0 +1,31 @@
package encodings
import (
"io"
"vncproxy/common"
"vncproxy/logger"
)
type EncLedStatePseudo struct {
LedState uint8
}
func (pe *EncLedStatePseudo) Type() int32 {
return int32(common.EncLedStatePseudo)
}
func (pe *EncLedStatePseudo) WriteTo(w io.Writer) (n int, err error) {
w.Write([]byte{pe.LedState})
return 1, nil
}
func (pe *EncLedStatePseudo) Read(pf *common.PixelFormat, rect *common.Rectangle, r *common.RfbReadHelper) (common.IEncoding, error) {
if rect.Width*rect.Height == 0 {
return pe, nil
}
u8, err := r.ReadUint8()
pe.LedState = u8
if err != nil {
logger.Error("error while reading led state: ", err)
return pe, err
}
return pe, nil
}

View File

@ -58,6 +58,7 @@ func NewFbsReader(fbsFile string) (*FbsReader, error) {
&encodings.TightEncoding{},
&encodings.TightPngEncoding{},
&encodings.EncCursorPseudo{},
&encodings.EncLedStatePseudo{},
&encodings.RawEncoding{},
&encodings.RREEncoding{},
},

View File

@ -18,6 +18,7 @@ func TestServer(t *testing.T) {
&encodings.RawEncoding{},
&encodings.TightEncoding{},
&encodings.EncCursorPseudo{},
&encodings.EncLedStatePseudo{},
//encodings.TightPngEncoding{},
&encodings.RREEncoding{},
&encodings.ZLibEncoding{},

View File

@ -118,6 +118,7 @@ func (vp *VncProxy) newServerConnHandler(cfg *server.ServerConfig, sconn *server
&encodings.RawEncoding{},
&encodings.TightEncoding{},
&encodings.EncCursorPseudo{},
&encodings.EncLedStatePseudo{},
&encodings.TightPngEncoding{},
&encodings.RREEncoding{},
&encodings.ZLibEncoding{},