udemy-go-microservices/logger-service/cmd/api/grpc.go

60 lines
1.1 KiB
Go

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)
}
}