diff --git a/docs/container_command_docker_json.md b/docs/container_command_docker_json.md index d4d0a5b..6dc08cb 100644 --- a/docs/container_command_docker_json.md +++ b/docs/container_command_docker_json.md @@ -42,7 +42,7 @@ - command 顶层、`target`、deploy `params`、`create` 中间结构都使用 binary key。 - `<<"action">>` 的取值使用 binary:`<<"list">>`、`<<"deploy">>`、`<<"start">>`、`<<"stop">>`、`<<"kill">>`、`<<"remove">>`、`<<"config">>`。 -- `<<"__undefined__">>` 只在 Docker 参数构造读取可选字段时按需当成 `undefined` 处理。 +- `undefined` 作为 Erlang 已有 atom 可以直接出现在 safe term 中;协议不再使用额外的哨兵 binary 表示缺省值。 下面各小节描述的是 `efka` 直接接收和处理的 map 格式。 diff --git a/src/docker/docker_container_builder.erl b/src/docker/docker_container_builder.erl index c13cb9d..9b31455 100644 --- a/src/docker/docker_container_builder.erl +++ b/src/docker/docker_container_builder.erl @@ -318,13 +318,7 @@ add_unique_front([Item | Rest], List) -> -spec field(map(), binary(), term()) -> term(). field(Map, Key, Default) when is_map(Map), is_binary(Key) -> - safe_value(maps:get(Key, Map, Default)). - --spec safe_value(term()) -> term(). -safe_value(<<"__undefined__">>) -> - undefined; -safe_value(Value) -> - Value. + maps:get(Key, Map, Default). -spec to_binary(binary() | list() | atom() | any()) -> binary(). to_binary(Value) when is_binary(Value) -> diff --git a/src/transport/efka_client.erl b/src/transport/efka_client.erl index 7c54e49..9495675 100644 --- a/src/transport/efka_client.erl +++ b/src/transport/efka_client.erl @@ -326,7 +326,7 @@ safe_term(true) -> safe_term(false) -> false; safe_term(undefined) -> - <<"__undefined__">>; + undefined; safe_term(Value) when is_atom(Value) -> atom_to_binary(Value, utf8); safe_term(Value) when is_map(Value) ->