1
0
Fork 0
leet/server.go

47 lines
1.2 KiB
Go

package main // import "github.com/serverwentdown/leet"
//go:generate protoc -I framebuffer framebuffer/framebuffer.proto --go_out=plugins=grpc:framebuffer
import (
"context"
"log"
"time"
"github.com/serverwentdown/leet/framebuffer"
)
type Server struct {
drawer *Drawer
}
func NewServer(drawer *Drawer) *Server {
s := &Server{
drawer: drawer,
}
return s
}
func (s *Server) DrawFrame(ctx context.Context, in *framebuffer.FrameBuffer) (*framebuffer.DrawResponse, error) {
s.drawer.SetLayer(int32(in.Layer), in.Frame.Dots)
timeDrawStart := time.Now()
err := s.drawer.Draw()
timeDrawEnd := time.Now()
if err != nil {
return nil, err
}
log.Printf("Draw took %d milliseconds", timeDrawEnd.Sub(timeDrawStart)/1000/1000)
return &framebuffer.DrawResponse{}, nil
}
func (s *Server) DrawFrames(ctx context.Context, in *framebuffer.FrameSequence) (*framebuffer.DrawResponse, error) {
log.Print("Received FrameSequence, but not implemented")
return &framebuffer.DrawResponse{}, nil
}
func (s *Server) GetLength(ctx context.Context, in *framebuffer.LengthRequest) (*framebuffer.LengthResponse, error) {
length := uint32(s.drawer.Length)
return &framebuffer.LengthResponse{
Length: length,
}, nil
}