|
@@ -46,6 +46,8 @@
|
|
|
do_delete_route/2
|
|
do_delete_route/2
|
|
|
]).
|
|
]).
|
|
|
|
|
|
|
|
|
|
+-export([cleanup_routes/1]).
|
|
|
|
|
+
|
|
|
-export([
|
|
-export([
|
|
|
match_routes/1,
|
|
match_routes/1,
|
|
|
lookup_routes/1,
|
|
lookup_routes/1,
|
|
@@ -70,6 +72,8 @@
|
|
|
|
|
|
|
|
-type dest() :: node() | {group(), node()}.
|
|
-type dest() :: node() | {group(), node()}.
|
|
|
|
|
|
|
|
|
|
+-dialyzer({nowarn_function, [cleanup_routes/1]}).
|
|
|
|
|
+
|
|
|
%%--------------------------------------------------------------------
|
|
%%--------------------------------------------------------------------
|
|
|
%% Mnesia bootstrap
|
|
%% Mnesia bootstrap
|
|
|
%%--------------------------------------------------------------------
|
|
%%--------------------------------------------------------------------
|
|
@@ -196,6 +200,18 @@ print_routes(Topic) ->
|
|
|
match_routes(Topic)
|
|
match_routes(Topic)
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
|
|
+-spec cleanup_routes(node()) -> ok.
|
|
|
|
|
+cleanup_routes(Node) ->
|
|
|
|
|
+ Patterns = [
|
|
|
|
|
+ #route{_ = '_', dest = Node},
|
|
|
|
|
+ #route{_ = '_', dest = {'_', Node}}
|
|
|
|
|
+ ],
|
|
|
|
|
+ [
|
|
|
|
|
+ mnesia:delete_object(?ROUTE_TAB, Route, write)
|
|
|
|
|
+ || Pat <- Patterns,
|
|
|
|
|
+ Route <- mnesia:match_object(?ROUTE_TAB, Pat, write)
|
|
|
|
|
+ ].
|
|
|
|
|
+
|
|
|
call(Router, Msg) ->
|
|
call(Router, Msg) ->
|
|
|
gen_server:call(Router, Msg, infinity).
|
|
gen_server:call(Router, Msg, infinity).
|
|
|
|
|
|