2024-09-06 20:42:23 +00:00
|
|
|
package main
|
2024-09-06 20:36:07 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2024-09-06 20:42:23 +00:00
|
|
|
"fmt"
|
|
|
|
"log"
|
2024-09-06 20:36:07 +00:00
|
|
|
"logger/data"
|
|
|
|
"logger/logs"
|
2024-09-06 20:42:23 +00:00
|
|
|
"net"
|
2024-09-06 21:11:49 +00:00
|
|
|
"time"
|
2024-09-06 20:42:23 +00:00
|
|
|
|
|
|
|
"google.golang.org/grpc"
|
2024-09-06 20:36:07 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type LogServer struct {
|
|
|
|
logs.UnimplementedLogServiceServer
|
|
|
|
Models data.Models
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *LogServer) WriteLog(
|
|
|
|
ctx context.Context,
|
|
|
|
req *logs.LogRequest,
|
|
|
|
) (*logs.LogResponse, error) {
|
2024-09-06 21:11:49 +00:00
|
|
|
now := time.Now()
|
2024-09-06 20:36:07 +00:00
|
|
|
input := req.GetLogEntry()
|
|
|
|
|
|
|
|
// write the log
|
|
|
|
logEntry := data.LogEntry{
|
|
|
|
Name: input.Name,
|
|
|
|
Data: input.Data,
|
|
|
|
}
|
|
|
|
|
2024-09-06 21:11:49 +00:00
|
|
|
logEntry.Data += fmt.Sprintf(" received date %d", now.UnixMicro())
|
2024-09-06 20:36:07 +00:00
|
|
|
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
|
|
|
|
}
|
2024-09-06 20:42:23 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|