Skip to content

Commit 8ff0d72

Browse files
committed
Avoid creating 5 elems tuple
1 parent fbd8a57 commit 8ff0d72

File tree

2 files changed

+20
-21
lines changed

2 files changed

+20
-21
lines changed

deps/rabbit/src/amqqueue.erl

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
new/9,
1515
new_with_version/9,
1616
new_with_version/10,
17-
new_target/4,
17+
new_target/2,
1818
fields/0,
1919
fields/1,
2020
field_vhost/0,
@@ -87,6 +87,7 @@
8787
(T =:= classic orelse T =:= ?amqqueue_v1_type)).
8888

8989
-type amqqueue_options() :: map() | ets:match_pattern().
90+
-type extra_bcc() :: rabbit_misc:resource_name() | none.
9091

9192
-record(amqqueue, {
9293
%% immutable
@@ -127,9 +128,9 @@
127128
%% to deliver a message to a target queue.
128129
-record(queue_target,
129130
{name :: rabbit_amqqueue:name(),
130-
type :: rabbit_queue_type:queue_type(),
131-
pid :: pid() | ra_server_id() | none,
132-
extra_bcc :: rabbit_misc:resource_name() | none
131+
target :: {rabbit_queue_type:queue_type(),
132+
pid() | ra_server_id() | none,
133+
extra_bcc()}
133134
}).
134135

135136
-opaque target() :: #queue_target{}.
@@ -344,15 +345,13 @@ new_with_version(?record_version,
344345
type = ensure_type_compat(Type)}.
345346

346347
-spec new_target(rabbit_amqqueue:name(),
347-
rabbit_queue_type:queue_type(),
348-
pid() | ra_server_id() | none,
349-
rabbit_misc:resource_name() | none) ->
348+
{rabbit_queue_type:queue_type(),
349+
pid() | ra_server_id() | none,
350+
extra_bcc()}) ->
350351
target().
351-
new_target(Name, Type, Pid, ExtraBcc) ->
352+
new_target(Name, Target) when tuple_size(Target) =:= 3 ->
352353
#queue_target{name = Name,
353-
type = Type,
354-
pid = Pid,
355-
extra_bcc = ExtraBcc}.
354+
target = Target}.
356355

357356
-spec is_amqqueue(any()) -> boolean().
358357

@@ -395,13 +394,13 @@ set_options(#amqqueue{} = Queue, Options) ->
395394
Queue#amqqueue{options = Options}.
396395

397396
-spec get_extra_bcc(amqqueue() | target()) ->
398-
rabbit_misc:resource_name() | none.
399-
get_extra_bcc(#amqqueue{options = #{extra_bcc := Name}}) ->
400-
Name;
397+
extra_bcc().
398+
get_extra_bcc(#amqqueue{options = #{extra_bcc := ExtraBcc}}) ->
399+
ExtraBcc;
401400
get_extra_bcc(#amqqueue{}) ->
402401
none;
403-
get_extra_bcc(#queue_target{extra_bcc = Name}) ->
404-
Name.
402+
get_extra_bcc(#queue_target{target = {_Type, _Pid, ExtraBcc}}) ->
403+
ExtraBcc.
405404

406405
% decorators
407406

@@ -465,7 +464,7 @@ set_name(#amqqueue{} = Queue, Name) ->
465464
-spec get_pid(amqqueue_v2() | target()) -> pid() | ra_server_id() | none.
466465

467466
get_pid(#amqqueue{pid = Pid}) -> Pid;
468-
get_pid(#queue_target{pid = Pid}) -> Pid.
467+
get_pid(#queue_target{target = {_Type, Pid, _ExtraBcc}}) -> Pid.
469468

470469
-spec set_pid(amqqueue_v2(), pid() | ra_server_id() | none) -> amqqueue_v2().
471470

@@ -525,7 +524,7 @@ set_state(#amqqueue{} = Queue, State) ->
525524
-spec get_type(amqqueue() | target()) -> atom().
526525

527526
get_type(#amqqueue{type = Type}) -> Type;
528-
get_type(#queue_target{type = Type}) -> Type.
527+
get_type(#queue_target{target = {Type, _Pid, _ExtraBcc}}) -> Type.
529528

530529
-spec get_vhost(amqqueue()) -> rabbit_types:vhost() | undefined.
531530

deps/rabbit/src/rabbit_db_queue.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -511,10 +511,10 @@ lookup_target(#resource{name = NameBin} = Name) ->
511511
false ->
512512
try
513513
ets:lookup_element(?KHEPRI_TARGET_PROJECTION, Name, 2, not_found) of
514-
{Type, Pid, ExtraBcc} ->
515-
amqqueue:new_target(Name, Type, Pid, ExtraBcc);
516514
not_found ->
517-
not_found
515+
not_found;
516+
Target ->
517+
amqqueue:new_target(Name, Target)
518518
catch
519519
error:badarg ->
520520
not_found

0 commit comments

Comments
 (0)