diff --git a/Client/Content/TurboLinkTest/UI/WBP_UserService_BP.uasset b/Client/Content/TurboLinkTest/UI/WBP_UserService_BP.uasset index 9f271ab..ed03a10 100644 Binary files a/Client/Content/TurboLinkTest/UI/WBP_UserService_BP.uasset and b/Client/Content/TurboLinkTest/UI/WBP_UserService_BP.uasset differ diff --git a/Client/Source/TurboLinkTest/TimeTestWidget.cpp b/Client/Source/TurboLinkTest/TimeTestWidget.cpp index 4e4bdae..011dbea 100644 --- a/Client/Source/TurboLinkTest/TimeTestWidget.cpp +++ b/Client/Source/TurboLinkTest/TimeTestWidget.cpp @@ -11,6 +11,8 @@ #include "TurboLinkGrpcUtilities.h" #include "TurboLinkGrpcConfig.h" +#include "SUser/UserMessage.h" + void UTimeTestWidget::NativeConstruct() { Super::NativeConstruct(); diff --git a/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.cpp b/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.cpp index ef57122..2ea3f23 100644 --- a/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.cpp +++ b/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.cpp @@ -19,3 +19,71 @@ void UTurboLinkTestGameInstance::Shutdown() TurboLinkManager->Shutdown(); TurboLinkManager = nullptr; } + +FString UTurboLinkTestGameInstance::DumpBytes(const FBytes& Bytes) +{ + FString ret; + for (uint8 value : Bytes.Value) + { + char temp[8] = { 0 }; + ret += FString::Printf(TEXT("%02X "), value); + } + return ret; +} + +void UTurboLinkTestGameInstance::DumpMapMessage(const TMap& Message) +{ + FString temp = ""; + for (const auto& item : Message) + { + temp += FString::Printf(TEXT("%s:[%s,%s],"), *UTurboLinkGrpcUtilities::CastInt64ToString(item.Key), *item.Value.Address, *item.Value.PostalCode); + } + UE_LOG(LogTemp, Warning, TEXT("ExtAddress={%s}"), *temp); +} + +void UTurboLinkTestGameInstance::DumpMessage(const FGrpcUserRegisterRequest& Message) +{ + /* + UE_LOG(LogTemp, Warning, TEXT("----------------- Dump Begin -----------------")); + UE_LOG(LogTemp, Warning, TEXT("Name=%s"), *Message.Name); + UE_LOG(LogTemp, Warning, TEXT("BytesValue=%s"), *DumpBytes(Message.BytesValue)); + UE_LOG(LogTemp, Warning, TEXT("Gender=%s"), *UEnum::GetValueAsString(Message.Gender)); + UE_LOG(LogTemp, Warning, TEXT("MessageValue={add:%s, postcode:%s}"), *Message.MessageValue.Address, *Message.MessageValue.PostalCode); + UE_LOG(LogTemp, Warning, TEXT("IntValue=%d"), Message.IntValue); + + FString temp; + for (const auto& item : Message.ExtDict) + { + temp += FString::Printf(TEXT("%d:%s,"), item.Key, *item.Value); + } + UE_LOG(LogTemp, Warning, TEXT("ExtDict={%s}"), *temp); + + temp = ""; + for (const auto& item : Message.ExtBytes) + { + temp += FString::Printf(TEXT("%s:[%s],"), *item.Key, *DumpBytes(item.Value)); + } + UE_LOG(LogTemp, Warning, TEXT("ExtBytes={%s}"), *temp); + + temp = ""; + for (const auto& item : Message.ExtEnum) + { + temp += FString::Printf(TEXT("%s:%s,"), *UTurboLinkGrpcUtilities::CastUInt64ToString(item.Key), *UEnum::GetValueAsString(item.Value)); + } + UE_LOG(LogTemp, Warning, TEXT("ExtEnum={%s}"), *temp); + + temp = ""; + for (const auto& item : Message.ExtAddress) + { + temp += FString::Printf(TEXT("%s:[%s,%s],"), *UTurboLinkGrpcUtilities::CastInt64ToString(item.Key), *item.Value.Address, *item.Value.PostalCode); + } + UE_LOG(LogTemp, Warning, TEXT("ExtAddress={%s}"), *temp); + + temp = ""; + for (const auto& item : Message.ExtInt) + { + temp += FString::Printf(TEXT("%d:%d,"), item.Key, item.Value); + } + UE_LOG(LogTemp, Warning, TEXT("ExtInt={%s}"), *temp); + */ +} \ No newline at end of file diff --git a/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.h b/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.h index 48798f5..badc9c0 100644 --- a/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.h +++ b/Client/Source/TurboLinkTest/TurboLinkTestGameInstance.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "Engine/GameInstance.h" +#include "SUser/UserMessage.h" #include "TurboLinkTestGameInstance.generated.h" class UTurboLinkGrpcManager; @@ -19,6 +20,16 @@ public: void Init() override; void Shutdown() override; +public: + UFUNCTION(BlueprintCallable) + void DumpMessage(const FGrpcUserRegisterRequest& Message); + + UFUNCTION(BlueprintCallable) + void DumpMapMessage(const TMap& Message); + +protected: + FString DumpBytes(const FBytes& Bytes); + protected: UPROPERTY() UTurboLinkGrpcManager* TurboLinkManager; diff --git a/Common/proto/user.proto b/Common/proto/user.proto index 27374ca..ecc7edf 100644 --- a/Common/proto/user.proto +++ b/Common/proto/user.proto @@ -7,9 +7,23 @@ import "common.proto"; message RegisterRequest { string name = 1; - Common.Gender gender = 2; - repeated Address address = 3; - + bytes bytes_value=2; + Common.Gender gender = 3; + Address message_value = 4; + int32 int_value = 5; + + repeated string names_field = 6; + repeated bytes bytes_field = 7; + repeated Common.Gender enum_field = 8; + repeated Address address = 9; + repeated int64 test_array = 10; + + map ext_dict = 11; + map ext_bytes = 12; + map ext_enum = 13; + map ext_address = 14; + map ext_int = 15; + message Address { string address = 1; string postal_code = 2; diff --git a/Server/services/user_server.go b/Server/services/user_server.go index 7c2646e..60adf58 100644 --- a/Server/services/user_server.go +++ b/Server/services/user_server.go @@ -7,6 +7,8 @@ import ( "errors" "google.golang.org/grpc" + "encoding/json" + User "tldemo/services/User" Common "tldemo/services/Common" ) @@ -35,6 +37,11 @@ func (s *UserServer) Register(ctx context.Context, in *User.RegisterRequest) (*C userData.Addresses = append(userData.Addresses, &UserAddress{Address : in.Address[i].Address, PostalCode: in.Address[i].PostalCode}) } + log.Printf("----------------- Dump Begin -----------------") + jsonBytes, _ := json.MarshalIndent(in, "", " ") + log.Printf("%s", string(jsonBytes)) + + s.UserArray = append(s.UserArray, userData) replyMessage := fmt.Sprintf("Hello %s, Your Id is %v", userData.Name, userData.Id)