ServeHours server
This commit is contained in:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
|
||||
@ -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); }
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
13
src/serve_hours/go.mod
Normal file
13
src/serve_hours/go.mod
Normal 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
19
src/serve_hours/go.sum
Normal 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
47
src/serve_hours/main.go
Normal 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()
|
||||
}
|
||||
@ -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 (
|
||||
@ -4,7 +4,7 @@
|
||||
// - protoc v3.21.12
|
||||
// source: serve_hours.proto
|
||||
|
||||
package fizz
|
||||
package serve_hours
|
||||
|
||||
import (
|
||||
context "context"
|
||||
Reference in New Issue
Block a user