61 lines
1.7 KiB
Erlang
61 lines
1.7 KiB
Erlang
%%--------------------------------------------------------------------
|
|
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
|
%%--------------------------------------------------------------------
|
|
|
|
-ifndef(EMQX_SCHEMA_REGISTRY_HRL).
|
|
-define(EMQX_SCHEMA_REGISTRY_HRL, true).
|
|
|
|
-define(CONF_KEY_ROOT, schema_registry).
|
|
-define(CONF_KEY_PATH, [?CONF_KEY_ROOT]).
|
|
|
|
%% Note: this has the `_ee_' segment for backwards compatibility.
|
|
-define(SCHEMA_REGISTRY_SHARD, emqx_ee_schema_registry_shard).
|
|
-define(SERDE_TAB, emqx_ee_schema_registry_serde_tab).
|
|
-define(PROTOBUF_CACHE_TAB, emqx_ee_schema_registry_protobuf_cache_tab).
|
|
|
|
-define(EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME,
|
|
<<"__CiYAWBja87PleCyKZ58h__SparkPlug_B_BUILT-IN">>
|
|
).
|
|
-type schema_name() :: binary().
|
|
-type schema_source() :: binary().
|
|
|
|
-type encoded_data() :: iodata().
|
|
-type decoded_data() :: map().
|
|
-type serializer() ::
|
|
fun((decoded_data()) -> encoded_data())
|
|
| fun((decoded_data(), term()) -> encoded_data()).
|
|
-type deserializer() ::
|
|
fun((encoded_data()) -> decoded_data())
|
|
| fun((encoded_data(), term()) -> decoded_data()).
|
|
-type destructor() :: fun(() -> ok).
|
|
-type serde_type() :: avro.
|
|
-type serde_opts() :: map().
|
|
|
|
-record(serde, {
|
|
name :: schema_name(),
|
|
serializer :: serializer(),
|
|
deserializer :: deserializer(),
|
|
destructor :: destructor()
|
|
}).
|
|
-type serde() :: #serde{}.
|
|
|
|
-record(protobuf_cache, {
|
|
fingerprint,
|
|
module,
|
|
module_binary
|
|
}).
|
|
-type protobuf_cache() :: #protobuf_cache{
|
|
fingerprint :: binary(),
|
|
module :: module(),
|
|
module_binary :: binary()
|
|
}.
|
|
|
|
-type serde_map() :: #{
|
|
name := schema_name(),
|
|
serializer := serializer(),
|
|
deserializer := deserializer(),
|
|
destructor := destructor()
|
|
}.
|
|
|
|
-endif.
|