serialization_traits.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. //
  3. // Copyright 2015 gRPC authors.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. //
  18. #ifndef GRPCPP_IMPL_SERIALIZATION_TRAITS_H
  19. #define GRPCPP_IMPL_SERIALIZATION_TRAITS_H
  20. namespace grpc {
  21. /// Defines how to serialize and deserialize some type.
  22. ///
  23. /// Used for hooking different message serialization API's into GRPC.
  24. /// Each SerializationTraits<Message> implementation must provide the
  25. /// following functions:
  26. /// 1. static Status Serialize(const Message& msg,
  27. /// ByteBuffer* buffer,
  28. /// bool* own_buffer);
  29. /// OR
  30. /// static Status Serialize(const Message& msg,
  31. /// grpc_byte_buffer** buffer,
  32. /// bool* own_buffer);
  33. /// The former is preferred; the latter is deprecated
  34. ///
  35. /// 2. static Status Deserialize(ByteBuffer* buffer,
  36. /// Message* msg);
  37. /// OR
  38. /// static Status Deserialize(grpc_byte_buffer* buffer,
  39. /// Message* msg);
  40. /// The former is preferred; the latter is deprecated
  41. ///
  42. /// Serialize is required to convert message to a ByteBuffer, and
  43. /// return that byte buffer through *buffer. *own_buffer should
  44. /// be set to true if the caller owns said byte buffer, or false if
  45. /// ownership is retained elsewhere.
  46. ///
  47. /// Deserialize is required to convert buffer into the message stored at
  48. /// msg. max_receive_message_size is passed in as a bound on the maximum
  49. /// number of message bytes Deserialize should accept.
  50. ///
  51. /// Both functions return a Status, allowing them to explain what went
  52. /// wrong if required.
  53. template <class Message,
  54. class UnusedButHereForPartialTemplateSpecialization = void>
  55. class SerializationTraits;
  56. } // namespace grpc
  57. #endif // GRPCPP_IMPL_SERIALIZATION_TRAITS_H