• 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
..
gRPC Loading commit data...
Benchmarks.md Loading commit data...
Building.md Loading commit data...
CONTRIBUTING.md Loading commit data...
CUsage.md Loading commit data...
Compiler.md Loading commit data...
CppUsage.md Loading commit data...
FlatBuffers.md Loading commit data...
FlexBuffers.md Loading commit data...
GoApi.md Loading commit data...
GoApi_generated.txt Loading commit data...
GoUsage.md Loading commit data...
Grammar.md Loading commit data...
Internals.md Loading commit data...
JavaCsharpUsage.md Loading commit data...
JavaScriptUsage.md Loading commit data...
PHPUsage.md Loading commit data...
PythonUsage.md Loading commit data...
README_TO_GENERATE_DOCS.md Loading commit data...
Schemas.md Loading commit data...
Support.md Loading commit data...
Tutorial.md Loading commit data...
WhitePaper.md Loading commit data...
doxyfile Loading commit data...
doxygen_layout.xml Loading commit data...
groups Loading commit data...
style.css Loading commit data...