vncproxy/common/client-message-type.go

60 lines
1.2 KiB
Go

package common
import (
"io"
)
type ClientMessageType uint8
//go:generate stringer -type=ClientMessageType
// Client-to-Server message types.
const (
SetPixelFormatMsgType ClientMessageType = iota
_
SetEncodingsMsgType
FramebufferUpdateRequestMsgType
KeyEventMsgType
PointerEventMsgType
ClientCutTextMsgType
ClientFenceMsgType = 248
QEMUExtendedKeyEventMsgType = 255
)
// Color represents a single color in a color map.
type Color struct {
pf *PixelFormat
cm *ColorMap
cmIndex uint32 // Only valid if pf.TrueColor is false.
R, G, B uint16
}
type ColorMap [256]Color
// ClientMessage is the interface
type ClientMessage interface {
Type() ClientMessageType
Read(io.Reader) (ClientMessage, error)
Write(io.Writer) error
}
func (cmt ClientMessageType) String() string {
switch cmt {
case SetPixelFormatMsgType:
return "SetPixelFormat"
case SetEncodingsMsgType:
return "SetEncodings"
case FramebufferUpdateRequestMsgType:
return "FramebufferUpdateRequest"
case KeyEventMsgType:
return "KeyEvent"
case QEMUExtendedKeyEventMsgType:
return "QEMUExtendedKeyEvent"
case PointerEventMsgType:
return "PointerEvent"
case ClientCutTextMsgType:
return "ClientCutText"
}
return ""
}