Initial Golang version
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package grpc_server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
|
||||
"github.com/dustinpianalto/snowflake/internal/generator"
|
||||
"github.com/dustinpianalto/snowflake/snowflake"
|
||||
)
|
||||
|
||||
const (
|
||||
GRPC_PORT = ":50051"
|
||||
)
|
||||
|
||||
type SnowflakeServer struct {
|
||||
snowflake.UnimplementedSnowflakeServer
|
||||
}
|
||||
|
||||
func (s *SnowflakeServer) GetSnowflake(ctx context.Context, in *snowflake.Empty) (*snowflake.SnowflakeReply, error) {
|
||||
var id uint64
|
||||
outputChan := make(chan uint64, 1)
|
||||
defer close(outputChan)
|
||||
generator.Generator.RequestChan <- outputChan
|
||||
id = <-outputChan
|
||||
return &snowflake.SnowflakeReply{Id: id, IdStr: strconv.FormatUint(id, 10)}, nil
|
||||
}
|
||||
|
||||
func RunGRPCServer() {
|
||||
grpcListener, err := net.Listen("tcp", GRPC_PORT)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to listen: %v", err)
|
||||
}
|
||||
|
||||
grpcServer := grpc.NewServer()
|
||||
snowflake.RegisterSnowflakeServer(grpcServer, &SnowflakeServer{})
|
||||
log.Printf("GRPC Server Listening on %v", grpcListener.Addr())
|
||||
if err := grpcServer.Serve(grpcListener); err != nil {
|
||||
log.Fatalf("Failed to serve: %v", err)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user