mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-04-28 19:13:21 +00:00
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package client
|
|
|
|
import (
|
|
"io"
|
|
"github.com/amitbet/vncproxy/common"
|
|
"github.com/amitbet/vncproxy/logger"
|
|
)
|
|
|
|
type WriteTo struct {
|
|
Writer io.Writer
|
|
Name string
|
|
}
|
|
|
|
func (p *WriteTo) Consume(seg *common.RfbSegment) error {
|
|
|
|
logger.Debugf("WriteTo.Consume ("+p.Name+"): got segment type=%s", seg.SegmentType)
|
|
switch seg.SegmentType {
|
|
case common.SegmentMessageStart:
|
|
case common.SegmentRectSeparator:
|
|
case common.SegmentBytes:
|
|
_, err := p.Writer.Write(seg.Bytes)
|
|
if err != nil {
|
|
logger.Errorf("WriteTo.Consume ("+p.Name+" SegmentBytes): problem writing to port: %s", err)
|
|
}
|
|
return err
|
|
case common.SegmentFullyParsedClientMessage:
|
|
|
|
clientMsg := seg.Message.(common.ClientMessage)
|
|
logger.Debugf("WriteTo.Consume ("+p.Name+"): got ClientMessage type=%s", clientMsg.Type())
|
|
err := clientMsg.Write(p.Writer)
|
|
if err != nil {
|
|
logger.Errorf("WriteTo.Consume ("+p.Name+" SegmentFullyParsedClientMessage): problem writing to port: %s", err)
|
|
}
|
|
return err
|
|
default:
|
|
//return errors.New("WriteTo.Consume: undefined RfbSegment type")
|
|
}
|
|
return nil
|
|
}
|