diff --git a/trpc/server/rpc/unary_rpc_method_handler.h b/trpc/server/rpc/unary_rpc_method_handler.h index 215fe419..d840b0b3 100644 --- a/trpc/server/rpc/unary_rpc_method_handler.h +++ b/trpc/server/rpc/unary_rpc_method_handler.h @@ -143,9 +143,9 @@ class UnaryRpcMethodHandler : public RpcMethodHandlerInterface { #ifdef TRPC_PROTO_USE_ARENA static constexpr bool IsEnablePbArena() { - return std::is_convertible_v && + return std::is_convertible_v && google::protobuf::Arena::is_arena_constructable::value && - std::is_convertible_v && + std::is_convertible_v && google::protobuf::Arena::is_arena_constructable::value; } #endif diff --git a/trpc/server/server_context.cc b/trpc/server/server_context.cc index 2d48ff03..c389fc2b 100644 --- a/trpc/server/server_context.cc +++ b/trpc/server/server_context.cc @@ -74,7 +74,7 @@ void ServerContext::SetDyeingKey(const std::string& key, const std::string& valu invoke_info_.message_type |= TrpcMessageType::TRPC_DYEING_MESSAGE; } -void ServerContext::SendUnaryResponse(const Status& status, google::protobuf::Message* pb) { +void ServerContext::SendUnaryResponse(const Status& status, google::protobuf::MessageLite* pb) { void* rsp_data = static_cast(pb); SendUnaryResponse(status, rsp_data, serialization::kPbMessage); } diff --git a/trpc/server/server_context.h b/trpc/server/server_context.h index dc59af91..c4842df9 100644 --- a/trpc/server/server_context.h +++ b/trpc/server/server_context.h @@ -513,8 +513,8 @@ class ServerContext : public RefCounted { /// @note before calling this method, you should call `SetResponse(false)` in the rpc interface implemented template void SendUnaryResponse(const Status& status, T& biz_rsp) { - if constexpr (std::is_convertible_v) { - SendUnaryResponse(status, static_cast(&biz_rsp)); + if constexpr (std::is_convertible_v) { + SendUnaryResponse(status, static_cast(&biz_rsp)); } else if constexpr (std::is_convertible_v) { SendUnaryResponse(status, static_cast(&biz_rsp)); } else if constexpr (std::is_convertible_v) { @@ -600,7 +600,7 @@ class ServerContext : public RefCounted { private: // Implementation of asynchronous packet return on the server side - void SendUnaryResponse(const Status& status, google::protobuf::Message* pb); + void SendUnaryResponse(const Status& status, google::protobuf::MessageLite* pb); // Implementation of asynchronous packet return on the server side void SendUnaryResponse(const Status& status, flatbuffers::trpc::MessageFbs* fbs); diff --git a/trpc/stream/stream.h b/trpc/stream/stream.h index d6e63ecd..85fefe67 100644 --- a/trpc/stream/stream.h +++ b/trpc/stream/stream.h @@ -72,7 +72,7 @@ class StreamReaderImpl : public RefCounted> { private: inline bool Deserialize(NoncontiguousBuffer* buffer, void* msg) { serialization::DataType type; - if constexpr (std::is_convertible_v) { + if constexpr (std::is_convertible_v) { type = serialization::kPbMessage; } else if constexpr (std::is_convertible_v) { type = serialization::kRapidJson; @@ -132,7 +132,7 @@ class StreamWriterImpl : public RefCounted> { private: inline bool Serialize(void* msg, NoncontiguousBuffer* buffer) { serialization::DataType type; - if constexpr (std::is_convertible_v) { + if constexpr (std::is_convertible_v) { type = serialization::kPbMessage; } else if constexpr (std::is_convertible_v) { type = serialization::kRapidJson;