• Lawrence Chan's avatar
    [C++] Improve flatbuffers + gRPC integration (#4310) · da67c0a7
    Lawrence Chan authored
    * Rework flatbuffers + gRPC integration
    
    - Introduce `flatbuffers::grpc::Message<T>`, a `grpc_slice`-backed
    message buffer that handles refcounting and allows flatbuffers to
    transfer ownership to gRPC efficiently. This replaces
    `flatbuffers::BufferRef<T>`, which required a copy call and was also
    unsafe w.r.t. buffer lifetime.
    - Introduce `flatbuffers::grpc::MessageBuilder`, a gRPC-specific builder
    that forces a `grpc_slice`-backed allocator and also adds some helpful
    `Message<T>`-related methods.
    - Update serializers accordingly (now zero-copy between flatbuffers and
    gRPC).
    
    * gRPC: verify messages by default, but allow user to override
    
    * gRPC: fix some formatting issues
    
    * Disable verification by default, but add helper method
    
    * Make FlatBufferBuilder fields protected + remove vec accessor
    
    * Use bool add_ref parameter to toggle refcount incr
    
    * Remove unnecessary inline specifiers
    
    * Fix formatting
    
    * Use auto
    
    * Remove empty lines
    
    * Use grpc_slice helper macros
    
    * Simplify reset code
    
    * Disable Message copy ctor and assignment by default
    
    * Remove unused member
    
    * Enable gRPC verification by default
    
    * Use auto
    
    * Bake in message verification (remove template specialization)
    
    * Add RoundUp func
    
    * Consolidate gRPC message copy flag
    
    * Make vector_downward allocations fully lazy
    
    * Test message verification failure code/message
    
    * Add grpctest verification test comments
    
    * Simplify reallocate implementation
    
    * Make initial_size a size_t
    
    * Use ternary op for growth_policy
    
    * Use truthiness rather than dont explicit nullptr check
    
    * Indent preprocessor directives
    
    * Remove grpc message copy/assignment
    
    * Fix a few bugs
    
    * Add gRPC example
    
    * Add basic gRPC docs
    
    * Use doxygen EXAMPLE_PATH + @include
    
    * Reference example fbs in grpc docs
    
    * Move gRPC examples into grpc/samples
    
    * Fix pointer/reference formatting
    
    * Use std::function rather than templated callback func
    
    * Create fresh message builder for each request
    
    * Use Clear() in Reset() impl
    
    * Use FLATBUFFERS_CONSTEXPR
    da67c0a7
Name
Last commit
Last update
.github Loading commit data...
CMake Loading commit data...
android Loading commit data...
biicode Loading commit data...
docs Loading commit data...
go Loading commit data...
grpc Loading commit data...
include/flatbuffers Loading commit data...
java/com/google/flatbuffers Loading commit data...
js Loading commit data...
net/FlatBuffers Loading commit data...
php Loading commit data...
python Loading commit data...
reflection Loading commit data...
samples Loading commit data...
src Loading commit data...
tests Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CMakeLists.txt Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE.txt Loading commit data...
appveyor.yml Loading commit data...
biicode.conf Loading commit data...
composer.json Loading commit data...
package.json Loading commit data...
pom.xml Loading commit data...
readme.md Loading commit data...