diff --git a/README.md b/README.md index 032ba09..fd32d5e 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,8 @@ make run ### Go services +[gRPC Source](https://github.com/grpc/grpc-go) + Install protobuf compiler ```sh go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 diff --git a/src/funnel/main.py b/src/funnel/main.py index 3cfd5ba..91fb849 100644 --- a/src/funnel/main.py +++ b/src/funnel/main.py @@ -19,7 +19,7 @@ def get_hours() -> int: with grpc.insecure_channel(f"{SERVE_HOURS_HOST}:{SERVE_HOURS_PORT}") as channel: stub = serve_hours_pb2_grpc.ServeHoursStub(channel) response = stub.GetHours(serve_hours_pb2.GetHoursRequest(timezone=TIMEZONE)) - print("GetHours() response: " + response.message) + print("GetHours() response: ", response) return response.hours diff --git a/src/protos/serve_hours.proto b/src/protos/serve_hours.proto index 3e660a7..5ac27c0 100644 --- a/src/protos/serve_hours.proto +++ b/src/protos/serve_hours.proto @@ -1,6 +1,6 @@ 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); } diff --git a/src/serve_hours/Makefile b/src/serve_hours/Makefile index 083f2cc..ea78998 100644 --- a/src/serve_hours/Makefile +++ b/src/serve_hours/Makefile @@ -2,17 +2,21 @@ PROTO_DIR=../protos STUBS_DIR=./stubs PROTO_FILENAME=serve_hours.proto GO_BIN_DIR=/home/eden/go/bin +OUT_DIR=../../dist +OUT_FILENAME=serve_hours run: - @source env/bin/activate && \ - python main.py + @go run ./main.go + +build: + @go build -ldflags "-s -w" -o $(OUT_DIR)/${OUT_FILENAME} ./main.go proto: @PATH="$(PATH):$(GO_BIN_DIR)" \ protoc \ -I$(PROTO_DIR) \ - --go_out=. \ + --go_out=$(STUBS_DIR) \ --go_opt=paths=source_relative \ - --go-grpc_out=. \ + --go-grpc_out=$(STUBS_DIR) \ --go-grpc_opt=paths=source_relative \ $(PROTO_DIR)/$(PROTO_FILENAME) diff --git a/src/serve_hours/go.mod b/src/serve_hours/go.mod new file mode 100644 index 0000000..70fbae1 --- /dev/null +++ b/src/serve_hours/go.mod @@ -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 +) diff --git a/src/serve_hours/go.sum b/src/serve_hours/go.sum new file mode 100644 index 0000000..1f375a3 --- /dev/null +++ b/src/serve_hours/go.sum @@ -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= diff --git a/src/serve_hours/main.go b/src/serve_hours/main.go new file mode 100644 index 0000000..40b5f7c --- /dev/null +++ b/src/serve_hours/main.go @@ -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() +} diff --git a/src/serve_hours/serve_hours.pb.go b/src/serve_hours/stubs/serve_hours.pb.go similarity index 96% rename from src/serve_hours/serve_hours.pb.go rename to src/serve_hours/stubs/serve_hours.pb.go index e8e31f0..852ee19 100644 --- a/src/serve_hours/serve_hours.pb.go +++ b/src/serve_hours/stubs/serve_hours.pb.go @@ -4,7 +4,7 @@ // protoc v3.21.12 // source: serve_hours.proto -package fizz +package serve_hours import ( 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, 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, - 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, - 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66, 0x69, 0x7a, 0x7a, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, + 0x68, 0x6f, 0x75, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/src/serve_hours/serve_hours_grpc.pb.go b/src/serve_hours/stubs/serve_hours_grpc.pb.go similarity index 99% rename from src/serve_hours/serve_hours_grpc.pb.go rename to src/serve_hours/stubs/serve_hours_grpc.pb.go index 4574d4c..81321a9 100644 --- a/src/serve_hours/serve_hours_grpc.pb.go +++ b/src/serve_hours/stubs/serve_hours_grpc.pb.go @@ -4,7 +4,7 @@ // - protoc v3.21.12 // source: serve_hours.proto -package fizz +package serve_hours import ( context "context"