62 #include "../base/plugin.h"
63 #include "../impl/types.h"
Polymorphic contract for runtime schema lookup and dynamic message construction.
Definition: schema_plugin_interface.h:78
virtual ~SchemaPluginInterface()=default
void * ProtobufMessagePtr
Opaque alias for a google::protobuf::Message pointer.
Definition: schema_plugin_interface.h:103
void * FlatbuffersSchemaPtr
Opaque alias for a reflection::Schema pointer (FlatBuffers BFBS).
Definition: schema_plugin_interface.h:108
void * ProtobufDescriptorPtr
Opaque alias for a google::protobuf::Descriptor pointer.
Definition: schema_plugin_interface.h:94
virtual FlatbuffersSchemaPtr search_flatbuffers_schema(const std::string &name)=0
Returns a verified BFBS reflection schema handle for a FlatBuffers root type.
virtual ProtobufMessagePtr create_protobuf_message(const std::string &name)=0
Returns a cached dynamic Message instance for the given Protobuf type.
virtual FlatbuffersParserPtr create_flatbuffers_parser(const std::string &name)=0
Returns a freshly built flatbuffers::Parser pre-loaded with the requested root.
SchemaPluginInterface()=default
virtual VersionInfo get_version_info() const =0
Reports the plugin's version and build identity.
virtual std::vector< SchemaData > get_all_schemas(SchemaType schema_type=SchemaType::kUnknown)=0
Enumerates every schema known to the plugin, optionally filtered by family.
void * FlatbuffersParserPtr
Opaque alias for a flatbuffers::Parser pointer pre-loaded with a root type.
Definition: schema_plugin_interface.h:113
virtual SchemaData search_schema(const std::string &name, SchemaType schema_type=SchemaType::kUnknown)=0
Resolves a single schema record by name, optionally restricted to one family.
virtual ProtobufDescriptorPtr search_protobuf_descriptor(const std::string &name)=0
Returns the Protobuf descriptor for a fully qualified message name.
#define VLINK_DISALLOW_COPY_AND_ASSIGN(classname)
Deletes the copy constructor and copy-assignment operator of classname.
Definition: macros.h:174
SchemaType
Coarse runtime schema family used by discovery, bag metadata and proxy routing.
Definition: types.h:207
@ kUnknown
Decoding family unknown.
#define VLINK_PLUGIN_REGISTER(InterfaceType)
Declares a plugin's identity from the demangled name of its abstract interface.
Definition: plugin.h:345
Wire-format-neutral wrapper around one serialised schema blob.
Definition: types.h:301
Build provenance reported by a concrete plugin implementation.
Definition: schema_plugin_interface.h:123
std::string timestamp
ISO-8601 build timestamp captured at compile time.
Definition: schema_plugin_interface.h:126
std::string version
Semantic version string such as "2.0.0".
Definition: schema_plugin_interface.h:125
std::string tag
Optional source-control tag tied to the binary.
Definition: schema_plugin_interface.h:127
std::string name
Human-readable plugin identifier.
Definition: schema_plugin_interface.h:124
std::string commit_id
Optional source-control commit hash.
Definition: schema_plugin_interface.h:128