Просмотр исходного кода

refactor: use ?NO_CB macro for the case when cb state is not cached

zmstone 1 год назад
Родитель
Сommit
d9512f8d2f
1 измененных файлов с 8 добавлено и 12 удалено
  1. 8 12
      apps/emqx_resource/src/emqx_resource_cache.erl

+ 8 - 12
apps/emqx_resource/src/emqx_resource_cache.erl

@@ -29,6 +29,7 @@
 -include_lib("stdlib/include/ms_transform.hrl").
 
 -define(CACHE, ?RESOURCE_CACHE).
+-define(NO_CB, no_state).
 
 -record(connector, {
     id :: binary(),
@@ -36,7 +37,7 @@
     manager_pid :: pid(),
     st_err :: st_err(),
     config :: term(),
-    cb :: term(),
+    cb = ?NO_CB :: term(),
     extra = []
 }).
 
@@ -94,7 +95,7 @@ write(ManagerPid, Group, Data) ->
                     %% save callback state in ets for dryrun
                     Cb;
                 false ->
-                    undefined
+                    ?NO_CB
             end,
         extra = []
     },
@@ -137,7 +138,7 @@ read_manager_pid(ID) ->
 -spec read_mod(resource_id()) -> not_found | {ok, module()}.
 read_mod(ID) ->
     case get_cb(ID) of
-        undefined ->
+        ?NO_CB ->
             not_found;
         #{mod := Mod} ->
             {ok, Mod}
@@ -145,9 +146,9 @@ read_mod(ID) ->
 
 get_cb(ID) ->
     case get_cb_pt(ID) of
-        undefined ->
+        ?NO_CB ->
             %% maybe it's a dryrun connector
-            ets:lookup_element(?CACHE, ID, #connector.cb, undefined);
+            ets:lookup_element(?CACHE, ID, #connector.cb, ?NO_CB);
         InPt ->
             InPt
     end.
@@ -218,12 +219,7 @@ get_channel_status(ChanKey) ->
     ets:lookup_element(?CACHE, ChanKey, #channel.status, ?NO_CHANNEL).
 
 get_cb_pt(ID) ->
-    try
-        persistent_term:get(?CB_PT_KEY(ID))
-    catch
-        error:badarg ->
-            undefined
-    end.
+    persistent_term:get(?CB_PT_KEY(ID), ?NO_CB).
 
 to_channel_record({ID0, #{status := Status, error := Error}}) ->
     ID = split_channel_id(ID0),
@@ -285,7 +281,7 @@ make_resource_data(ID, Connector, Channels) ->
     } = Connector,
     Cb =
         case Cb0 of
-            undefined ->
+            ?NO_CB ->
                 get_cb_pt(ID);
             X ->
                 X