4444-define (MNESIA_DURABLE_TABLE , rabbit_durable_exchange ).
4545-define (MNESIA_SERIAL_TABLE , rabbit_exchange_serial ).
4646
47- -type name () :: rabbit_types :r ('exchange' ).
48-
4947% % -------------------------------------------------------------------
5048% % get_all().
5149% % -------------------------------------------------------------------
@@ -107,8 +105,8 @@ get_all_durable_in_mnesia() ->
107105% % list().
108106% % -------------------------------------------------------------------
109107
110- -spec list () -> [Exchange ] when
111- Exchange :: rabbit_types : exchange ().
108+ -spec list () -> [ExchangeName ] when
109+ ExchangeName :: rabbit_exchange : name ().
112110% % @doc Lists the names of all exchanges.
113111% %
114112% % @returns a list of exchange names.
@@ -128,7 +126,7 @@ list_in_mnesia() ->
128126% % -------------------------------------------------------------------
129127
130128-spec get (ExchangeName ) -> Ret when
131- ExchangeName :: name (),
129+ ExchangeName :: rabbit_exchange : name (),
132130 Ret :: {ok , Exchange :: rabbit_types :exchange ()} | {error , not_found }.
133131% % @doc Returns the record of the exchange named `Name'.
134132% %
@@ -150,7 +148,7 @@ get_in_mnesia(Name) ->
150148% % -------------------------------------------------------------------
151149
152150-spec get_many ([ExchangeName ]) -> [Exchange ] when
153- ExchangeName :: name (),
151+ ExchangeName :: rabbit_exchange : name (),
154152 Exchange :: rabbit_types :exchange ().
155153% % @doc Returns the records of the exchanges named `Name'.
156154% %
@@ -192,7 +190,7 @@ count_in_mnesia() ->
192190% % -------------------------------------------------------------------
193191
194192-spec update (ExchangeName , UpdateFun ) -> ok when
195- ExchangeName :: name (),
193+ ExchangeName :: rabbit_exchange : name (),
196194 UpdateFun :: fun ((Exchange ) -> Exchange ).
197195% % @doc Updates an existing exchange record using the result of
198196% % `UpdateFun'.
@@ -214,6 +212,12 @@ update_in_mnesia(XName, Fun) ->
214212 ok
215213 end ).
216214
215+ -spec update_in_mnesia_tx (ExchangeName , UpdateFun ) -> Ret when
216+ ExchangeName :: rabbit_exchange :name (),
217+ Exchange :: rabbit_types :exchange (),
218+ UpdateFun :: fun ((Exchange ) -> Exchange ),
219+ Ret :: not_found | Exchange .
220+
217221update_in_mnesia_tx (Name , Fun ) ->
218222 Table = {? MNESIA_TABLE , Name },
219223 case mnesia :wread (Table ) of
@@ -294,7 +298,7 @@ set_in_mnesia(Xs) when is_list(Xs) ->
294298% % -------------------------------------------------------------------
295299
296300-spec peek_serial (ExchangeName ) -> Serial when
297- ExchangeName :: name (),
301+ ExchangeName :: rabbit_exchange : name (),
298302 Serial :: integer ().
299303% % @doc Returns the next serial number without increasing it.
300304% %
@@ -324,7 +328,7 @@ peek_serial_in_mnesia_tx(XName, LockType) ->
324328% % -------------------------------------------------------------------
325329
326330-spec next_serial (ExchangeName ) -> Serial when
327- ExchangeName :: name (),
331+ ExchangeName :: rabbit_exchange : name (),
328332 Serial :: integer ().
329333% % @doc Returns the next serial number and increases it.
330334% %
@@ -342,6 +346,10 @@ next_serial_in_mnesia(XName) ->
342346 next_serial_in_mnesia_tx (XName )
343347 end ).
344348
349+ -spec next_serial_in_mnesia_tx (ExchangeName ) -> Serial when
350+ ExchangeName :: rabbit_exchange :name (),
351+ Serial :: integer ().
352+
345353next_serial_in_mnesia_tx (XName ) ->
346354 Serial = peek_serial_in_mnesia_tx (XName , write ),
347355 ok = mnesia :write (? MNESIA_SERIAL_TABLE ,
@@ -353,7 +361,7 @@ next_serial_in_mnesia_tx(XName) ->
353361% % -------------------------------------------------------------------
354362
355363-spec delete (ExchangeName , IfUnused ) -> Ret when
356- ExchangeName :: name (),
364+ ExchangeName :: rabbit_exchange : name (),
357365 IfUnused :: boolean (),
358366 Exchange :: rabbit_types :exchange (),
359367 Binding :: rabbit_types :binding (),
@@ -398,6 +406,14 @@ conditional_delete_in_mnesia(X = #exchange{name = XName}, OnlyDurable) ->
398406unconditional_delete_in_mnesia (X , OnlyDurable ) ->
399407 delete_in_mnesia (X , OnlyDurable , true ).
400408
409+ -spec delete_in_mnesia (Exchange , OnlyDurable , RemoveBindingsForSource ) -> Ret when
410+ Exchange :: rabbit_types :exchange (),
411+ OnlyDurable :: boolean (),
412+ RemoveBindingsForSource :: boolean (),
413+ Exchange :: rabbit_types :exchange (),
414+ Binding :: rabbit_types :binding (),
415+ Deletions :: dict :dict (),
416+ Ret :: {error , not_found } | {error , in_use } | {deleted , Exchange , [Binding ], Deletions }.
401417delete_in_mnesia (X = # exchange {name = XName }, OnlyDurable , RemoveBindingsForSource ) ->
402418 ok = mnesia :delete ({? MNESIA_TABLE , XName }),
403419 mnesia :delete ({? MNESIA_DURABLE_TABLE , XName }),
@@ -409,7 +425,7 @@ delete_in_mnesia(X = #exchange{name = XName}, OnlyDurable, RemoveBindingsForSour
409425% % -------------------------------------------------------------------
410426
411427-spec delete_serial (ExchangeName ) -> ok when
412- ExchangeName :: name ().
428+ ExchangeName :: rabbit_exchange : name ().
413429% % @doc Deletes an exchange serial record from the database.
414430% %
415431% % @returns ok
@@ -494,7 +510,7 @@ match_in_mnesia(Pattern) ->
494510% % -------------------------------------------------------------------
495511
496512-spec exists (ExchangeName ) -> Exists when
497- ExchangeName :: name (),
513+ ExchangeName :: rabbit_exchange : name (),
498514 Exists :: boolean ().
499515% % @doc Indicates if the exchange named `Name' exists.
500516% %
@@ -532,9 +548,12 @@ clear_in_mnesia() ->
532548% % maybe_auto_delete_in_mnesia().
533549% % -------------------------------------------------------------------
534550
535- -spec maybe_auto_delete_in_mnesia
536- (rabbit_types :exchange (), boolean ())
537- -> 'not_deleted' | {'deleted' , rabbit_binding :deletions ()}.
551+ -spec maybe_auto_delete_in_mnesia (ExchangeName , boolean ()) -> Ret when
552+ ExchangeName :: rabbit_exchange :name (),
553+ Exchange :: rabbit_types :exchange (),
554+ Deletions :: rabbit_binding :deletions (),
555+ Ret :: {'not_deleted' , 'undefined' | Exchange } |
556+ {'deleted' , Exchange , Deletions }.
538557maybe_auto_delete_in_mnesia (XName , OnlyDurable ) ->
539558 case mnesia :read ({case OnlyDurable of
540559 true -> ? MNESIA_DURABLE_TABLE ;
0 commit comments