ServeHours server

This commit is contained in:
Eden Kirin
2023-03-19 09:29:44 +01:00
parent 827f3d296f
commit 1050730047
9 changed files with 96 additions and 11 deletions

View File

@ -95,6 +95,8 @@ make run
### Go services ### Go services
[gRPC Source](https://github.com/grpc/grpc-go)
Install protobuf compiler Install protobuf compiler
```sh ```sh
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28

View File

@ -19,7 +19,7 @@ def get_hours() -> int:
with grpc.insecure_channel(f"{SERVE_HOURS_HOST}:{SERVE_HOURS_PORT}") as channel: with grpc.insecure_channel(f"{SERVE_HOURS_HOST}:{SERVE_HOURS_PORT}") as channel:
stub = serve_hours_pb2_grpc.ServeHoursStub(channel) stub = serve_hours_pb2_grpc.ServeHoursStub(channel)
response = stub.GetHours(serve_hours_pb2.GetHoursRequest(timezone=TIMEZONE)) response = stub.GetHours(serve_hours_pb2.GetHoursRequest(timezone=TIMEZONE))
print("GetHours() response: " + response.message) print("GetHours() response: ", response)
return response.hours return response.hours

View File

@ -1,6 +1,6 @@
syntax = "proto3"; syntax = "proto3";
option go_package = "example.com/project/protos/fizz"; option go_package = "example.com/project/protos/serve_hours";
service ServeHours { rpc GetHours(GetHoursRequest) returns (GetHoursResponse); } service ServeHours { rpc GetHours(GetHoursRequest) returns (GetHoursResponse); }

View File

@ -2,17 +2,21 @@ PROTO_DIR=../protos
STUBS_DIR=./stubs STUBS_DIR=./stubs
PROTO_FILENAME=serve_hours.proto PROTO_FILENAME=serve_hours.proto
GO_BIN_DIR=/home/eden/go/bin GO_BIN_DIR=/home/eden/go/bin
OUT_DIR=../../dist
OUT_FILENAME=serve_hours
run: run:
@source env/bin/activate && \ @go run ./main.go
python main.py
build:
@go build -ldflags "-s -w" -o $(OUT_DIR)/${OUT_FILENAME} ./main.go
proto: proto:
@PATH="$(PATH):$(GO_BIN_DIR)" \ @PATH="$(PATH):$(GO_BIN_DIR)" \
protoc \ protoc \
-I$(PROTO_DIR) \ -I$(PROTO_DIR) \
--go_out=. \ --go_out=$(STUBS_DIR) \
--go_opt=paths=source_relative \ --go_opt=paths=source_relative \
--go-grpc_out=. \ --go-grpc_out=$(STUBS_DIR) \
--go-grpc_opt=paths=source_relative \ --go-grpc_opt=paths=source_relative \
$(PROTO_DIR)/$(PROTO_FILENAME) $(PROTO_DIR)/$(PROTO_FILENAME)

13
src/serve_hours/go.mod Normal file
View File

@ -0,0 +1,13 @@
module serve_hours
go 1.20
require (
github.com/golang/protobuf v1.5.2 // indirect
golang.org/x/net v0.5.0 // indirect
golang.org/x/sys v0.4.0 // indirect
golang.org/x/text v0.6.0 // indirect
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect
google.golang.org/grpc v1.53.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
)

19
src/serve_hours/go.sum Normal file
View File

@ -0,0 +1,19 @@
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w=
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc=
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=

47
src/serve_hours/main.go Normal file
View File

@ -0,0 +1,47 @@
package main
import (
"context"
"fmt"
"log"
"net"
pb "serve_hours/stubs"
"google.golang.org/grpc"
)
const SERVE_HOURS_HOST = "localhost"
const SERVE_HOURS_PORT = 50001
const SERVE_MINUTES_HOST = "localhost"
const SERVE_MINUTES_PORT = 50002
const SERVE_SECONDS_HOST = "localhost"
const SERVE_SECONDS_PORT = 50003
const SERVE_MILLISECONDS_HOST = "localhost"
const SERVE_MILLISECONDS_PORT = 50004
type grpc_server struct {
pb.UnimplementedServeHoursServer
}
func (s *grpc_server) GetHours(ctx context.Context, in *pb.GetHoursRequest) (*pb.GetHoursResponse, error) {
log.Printf("Received timezone: %v", in.GetTimezone())
return &pb.GetHoursResponse{Hours: 123}, nil
}
func serve() {
lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", SERVE_HOURS_HOST, SERVE_HOURS_PORT))
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
pb.RegisterServeHoursServer(s, &grpc_server{})
log.Printf("server listening at %v", lis.Addr())
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
func main() {
serve()
}

View File

@ -4,7 +4,7 @@
// protoc v3.21.12 // protoc v3.21.12
// source: serve_hours.proto // source: serve_hours.proto
package fizz package serve_hours
import ( import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@ -127,10 +127,10 @@ var file_serve_hours_proto_rawDesc = []byte{
0x53, 0x65, 0x72, 0x76, 0x65, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x08, 0x47, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x08, 0x47, 0x65,
0x74, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x75, 0x72,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f,
0x75, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x21, 0x5a, 0x1f, 0x65, 0x75, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x28, 0x5a, 0x26, 0x65,
0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66, 0x69, 0x7a, 0x7a, 0x62, 0x06, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -4,7 +4,7 @@
// - protoc v3.21.12 // - protoc v3.21.12
// source: serve_hours.proto // source: serve_hours.proto
package fizz package serve_hours
import ( import (
context "context" context "context"