ServeHours server
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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); }
|
||||||
|
|
||||||
|
|||||||
@ -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
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
|
// 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 (
|
||||||
@ -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"
|
||||||
Reference in New Issue
Block a user