package main import ( "context" "fmt" "log" "logger/data" "logger/logs" "net" "time" "google.golang.org/grpc" ) type LogServer struct { logs.UnimplementedLogServiceServer Models data.Models } func (l *LogServer) WriteLog( ctx context.Context, req *logs.LogRequest, ) (*logs.LogResponse, error) { now := time.Now() input := req.GetLogEntry() // write the log logEntry := data.LogEntry{ Name: input.Name, Data: input.Data, } logEntry.Data += fmt.Sprintf(" received date %d", now.UnixMicro()) err := l.Models.LogEntry.Insert(logEntry) if err != nil { res := &logs.LogResponse{Result: "failed"} return res, err } res := &logs.LogResponse{Result: "logged!"} return res, nil } func (app *Config) gRPCListen() { lis, err := net.Listen("tcp", fmt.Sprintf(":%s", gRpcPort)) if err != nil { log.Fatalf("Failed to listen to gRPC %v", err) } s := grpc.NewServer() logs.RegisterLogServiceServer(s, &LogServer{Models: app.Models}) log.Printf("gRPC Server started on port %s", gRpcPort) if err := s.Serve(lis); err != nil { log.Fatalf("Failed to listen to gRPC %v", err) } }