测试嵌套消息和import功能
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,9 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package Common;
|
||||||
|
option go_package = "tldemo/services/Common";
|
||||||
|
|
||||||
|
enum Gender {
|
||||||
|
Male=0;
|
||||||
|
Female=1;
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ set CLIENT_OUTPUT_DIR=%CURRENT_DIR%\output\client
|
|||||||
if not exist %CLIENT_OUTPUT_DIR% mkdir %CLIENT_OUTPUT_DIR%
|
if not exist %CLIENT_OUTPUT_DIR% mkdir %CLIENT_OUTPUT_DIR%
|
||||||
|
|
||||||
call "%TL_UE_PLUGIN_PATH%\Tools\generate_code.cmd" hello.proto Greeter %CLIENT_OUTPUT_DIR%
|
call "%TL_UE_PLUGIN_PATH%\Tools\generate_code.cmd" hello.proto Greeter %CLIENT_OUTPUT_DIR%
|
||||||
|
call "%TL_UE_PLUGIN_PATH%\Tools\generate_code.cmd" common.proto Common %CLIENT_OUTPUT_DIR%
|
||||||
call "%TL_UE_PLUGIN_PATH%\Tools\generate_code.cmd" user.proto User %CLIENT_OUTPUT_DIR%
|
call "%TL_UE_PLUGIN_PATH%\Tools\generate_code.cmd" user.proto User %CLIENT_OUTPUT_DIR%
|
||||||
|
|
||||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
@@ -28,5 +29,5 @@ set SERVER_OUTPUT_DIR=%CURRENT_DIR%\output\server
|
|||||||
if not exist %SERVER_OUTPUT_DIR% mkdir %SERVER_OUTPUT_DIR%
|
if not exist %SERVER_OUTPUT_DIR% mkdir %SERVER_OUTPUT_DIR%
|
||||||
|
|
||||||
"%PROTOC_EXE_PATH%" --go_out="%SERVER_OUTPUT_DIR%" --go-grpc_out=%SERVER_OUTPUT_DIR% hello.proto
|
"%PROTOC_EXE_PATH%" --go_out="%SERVER_OUTPUT_DIR%" --go-grpc_out=%SERVER_OUTPUT_DIR% hello.proto
|
||||||
|
"%PROTOC_EXE_PATH%" --go_out="%SERVER_OUTPUT_DIR%" --go-grpc_out=%SERVER_OUTPUT_DIR% common.proto
|
||||||
"%PROTOC_EXE_PATH%" --go_out="%SERVER_OUTPUT_DIR%" --go-grpc_out=%SERVER_OUTPUT_DIR% user.proto
|
"%PROTOC_EXE_PATH%" --go_out="%SERVER_OUTPUT_DIR%" --go-grpc_out=%SERVER_OUTPUT_DIR% user.proto
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package Greeter;
|
package Greeter;
|
||||||
option go_package = "./Greeter";
|
option go_package = "tldemo/services/Greeter";
|
||||||
|
|
||||||
message HelloRequest {
|
message HelloRequest {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
|
|||||||
+9
-15
@@ -1,23 +1,19 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package User;
|
package User;
|
||||||
option go_package = "./User";
|
option go_package = "tldemo/services/User";
|
||||||
|
|
||||||
|
import "common.proto";
|
||||||
message Address {
|
|
||||||
string address = 1;
|
|
||||||
string postal_code = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum GENDER_ENUM {
|
|
||||||
GE_MALE=0;
|
|
||||||
GE_FEMALE=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message RegisterRequest {
|
message RegisterRequest {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
GENDER_ENUM gender = 2;
|
Common.Gender gender = 2;
|
||||||
repeated Address address = 3;
|
repeated Address address = 3;
|
||||||
|
|
||||||
|
message Address {
|
||||||
|
string address = 1;
|
||||||
|
string postal_code = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message RegisterResponse {
|
message RegisterResponse {
|
||||||
@@ -31,12 +27,10 @@ message QueryRequest {
|
|||||||
|
|
||||||
message QueryResponse {
|
message QueryResponse {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
GENDER_ENUM gender = 2;
|
Common.Gender gender = 2;
|
||||||
repeated Address address = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service UserService {
|
service UserService {
|
||||||
rpc Register (RegisterRequest) returns (RegisterResponse);
|
rpc Register (RegisterRequest) returns (RegisterResponse);
|
||||||
rpc Query(QueryRequest) returns(QueryResponse);
|
rpc Query(QueryRequest) returns(QueryResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,36 +7,36 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
pb "tldemo/services/Greeter"
|
Greeter "tldemo/services/Greeter"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GreeterServer struct {
|
type GreeterServer struct {
|
||||||
pb.UnimplementedGreeterServiceServer
|
Greeter.UnimplementedGreeterServiceServer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *GreeterServer) Hello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {
|
func (s *GreeterServer) Hello(ctx context.Context, in *Greeter.HelloRequest) (*Greeter.HelloResponse, error) {
|
||||||
currentTime := time.Now()
|
currentTime := time.Now()
|
||||||
replyMessage := fmt.Sprintf("Hello %s, time is %s", in.Name, currentTime.Format("15:04:05"))
|
replyMessage := fmt.Sprintf("Hello %s, time is %s", in.Name, currentTime.Format("15:04:05"))
|
||||||
log.Printf("[Hello User] %s", in.Name)
|
log.Printf("[Hello User] %s", in.Name)
|
||||||
result := &pb.HelloResponse{ReplyMessage: replyMessage}
|
result := &Greeter.HelloResponse{ReplyMessage: replyMessage}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type TimeServer struct {
|
type TimeServer struct {
|
||||||
pb.UnimplementedTimeServiceServer
|
Greeter.UnimplementedTimeServiceServer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TimeServer) Now(ctx context.Context, in *pb.Nothing) (*pb.NowResponse, error) {
|
func (s *TimeServer) Now(ctx context.Context, in *Greeter.Nothing) (*Greeter.NowResponse, error) {
|
||||||
currentTime := uint64(time.Now().UTC().UnixMilli())
|
currentTime := uint64(time.Now().UTC().UnixMilli())
|
||||||
log.Printf("[Now]send time: %d", currentTime)
|
log.Printf("[Now]send time: %d", currentTime)
|
||||||
|
|
||||||
result := &pb.NowResponse{Now: currentTime}
|
result := &Greeter.NowResponse{Now: currentTime}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TimeServer) Ticktok(in *pb.TicktokRequest, stream pb.TimeService_TicktokServer) error {
|
func (s *TimeServer) Ticktok(in *Greeter.TicktokRequest, stream Greeter.TimeService_TicktokServer) error {
|
||||||
ctx := stream.Context()
|
ctx := stream.Context()
|
||||||
response := &pb.NowResponse{}
|
response := &Greeter.NowResponse{}
|
||||||
|
|
||||||
sendNow := func(counts int32) {
|
sendNow := func(counts int32) {
|
||||||
response.Now = uint64(time.Now().UTC().UnixMilli())
|
response.Now = uint64(time.Now().UTC().UnixMilli())
|
||||||
@@ -72,9 +72,9 @@ func (s *TimeServer) Ticktok(in *pb.TicktokRequest, stream pb.TimeService_Tickto
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TimeServer) Watch(stream pb.TimeService_WatchServer) error {
|
func (s *TimeServer) Watch(stream Greeter.TimeService_WatchServer) error {
|
||||||
ctx := stream.Context()
|
ctx := stream.Context()
|
||||||
response := &pb.NowResponse{}
|
response := &Greeter.NowResponse{}
|
||||||
|
|
||||||
sendNow := func() error {
|
sendNow := func() error {
|
||||||
response.Now = uint64(time.Now().UTC().UnixMilli())
|
response.Now = uint64(time.Now().UTC().UnixMilli())
|
||||||
@@ -100,10 +100,10 @@ func (s *TimeServer) Watch(stream pb.TimeService_WatchServer) error {
|
|||||||
|
|
||||||
func RegisterGreeterServer(s *grpc.Server) {
|
func RegisterGreeterServer(s *grpc.Server) {
|
||||||
greeterServer := &GreeterServer{}
|
greeterServer := &GreeterServer{}
|
||||||
pb.RegisterGreeterServiceServer(s, greeterServer)
|
Greeter.RegisterGreeterServiceServer(s, greeterServer)
|
||||||
|
|
||||||
timeServer := &TimeServer{}
|
timeServer := &TimeServer{}
|
||||||
pb.RegisterTimeServiceServer(s, timeServer)
|
Greeter.RegisterTimeServiceServer(s, timeServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
pb "tldemo/services/User"
|
User "tldemo/services/User"
|
||||||
|
Common "tldemo/services/Common"
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserAddress struct {
|
type UserAddress struct {
|
||||||
@@ -18,16 +19,16 @@ type UserAddress struct {
|
|||||||
type UserData struct {
|
type UserData struct {
|
||||||
Id int
|
Id int
|
||||||
Name string
|
Name string
|
||||||
Gender pb.GENDER_ENUM
|
Gender Common.Gender
|
||||||
Addresses [] *UserAddress
|
Addresses [] *UserAddress
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserServer struct {
|
type UserServer struct {
|
||||||
pb.UnimplementedUserServiceServer
|
User.UnimplementedUserServiceServer
|
||||||
UserArray []*UserData
|
UserArray []*UserData
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *UserServer) Register(ctx context.Context, in *pb.RegisterRequest) (*pb.RegisterResponse, error) {
|
func (s *UserServer) Register(ctx context.Context, in *User.RegisterRequest) (*User.RegisterResponse, error) {
|
||||||
userData := &UserData{Id:len(s.UserArray), Name:in.Name, Gender:in.Gender}
|
userData := &UserData{Id:len(s.UserArray), Name:in.Name, Gender:in.Gender}
|
||||||
userData.Addresses = make([]*UserAddress, 0)
|
userData.Addresses = make([]*UserAddress, 0)
|
||||||
for i:=0; i<len(in.Address); i++ {
|
for i:=0; i<len(in.Address); i++ {
|
||||||
@@ -38,11 +39,11 @@ func (s *UserServer) Register(ctx context.Context, in *pb.RegisterRequest) (*pb.
|
|||||||
|
|
||||||
replyMessage := fmt.Sprintf("Hello %s, Your Id is %v", userData.Name, userData.Id)
|
replyMessage := fmt.Sprintf("Hello %s, Your Id is %v", userData.Name, userData.Id)
|
||||||
log.Printf("[Register User] %s", replyMessage)
|
log.Printf("[Register User] %s", replyMessage)
|
||||||
result := &pb.RegisterResponse{Id: uint64(userData.Id), Msg: replyMessage}
|
result := &User.RegisterResponse{Id: uint64(userData.Id), Msg: replyMessage}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *UserServer) Query(ctx context.Context, in *pb.QueryRequest) (*pb.QueryResponse, error) {
|
func (s *UserServer) Query(ctx context.Context, in *User.QueryRequest) (*User.QueryResponse, error) {
|
||||||
log.Printf("[Query User] %d", in.Id)
|
log.Printf("[Query User] %d", in.Id)
|
||||||
|
|
||||||
if(in.Id<0 || int(in.Id)>=len(s.UserArray)) {
|
if(in.Id<0 || int(in.Id)>=len(s.UserArray)) {
|
||||||
@@ -51,16 +52,15 @@ func (s *UserServer) Query(ctx context.Context, in *pb.QueryRequest) (*pb.QueryR
|
|||||||
|
|
||||||
var userData = s.UserArray[int(in.Id)]
|
var userData = s.UserArray[int(in.Id)]
|
||||||
|
|
||||||
address := make([]*pb.Address, 0)
|
//address := make([]*User.RegisterRequest_Address, 0)
|
||||||
for i:=0; i<len(userData.Addresses); i++ {
|
//for i:=0; i<len(userData.Addresses); i++ {
|
||||||
address = append(address, &pb.Address{ Address: userData.Addresses[i].Address, PostalCode: userData.Addresses[i].PostalCode})
|
// address = append(address, &User.RegisterRequest_Address{ Address: userData.Addresses[i].Address, PostalCode: userData.Addresses[i].PostalCode})
|
||||||
}
|
//}
|
||||||
//address[0] = &pb.Address{ Address: "xxxx", PostalCode: "1234"}
|
//address[0] = &User.Address{ Address: "xxxx", PostalCode: "1234"}
|
||||||
|
|
||||||
result := &pb.QueryResponse{
|
result := &User.QueryResponse{
|
||||||
Name: userData.Name,
|
Name: userData.Name,
|
||||||
Gender: userData.Gender,
|
Gender: userData.Gender,
|
||||||
Address : address,
|
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
@@ -69,6 +69,6 @@ func RegisterUserServer(s *grpc.Server) {
|
|||||||
userServer := &UserServer{}
|
userServer := &UserServer{}
|
||||||
userServer.UserArray = make([]*UserData, 0)
|
userServer.UserArray = make([]*UserData, 0)
|
||||||
|
|
||||||
pb.RegisterUserServiceServer(s, userServer)
|
User.RegisterUserServiceServer(s, userServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user