@@ -210,7 +210,7 @@ abcast(Name, Msg) when is_atom(Name) ->
210210
211211-spec  abcast (list (), atom (), term ()) ->  abcast .
212212abcast (Nodes , Name , Msg ) when  is_list (Nodes ), is_atom (Name ) -> 
213-     _  =  [erlang : spawn ( ? MODULE ,  cast_worker , [ Node , { abcast , Name ,Msg },  abcast ,  undefined ] ) || Node  <-  Nodes ],
213+     _  =  [do_abcast ( Node , Name ,  Msg ) || Node  <-  Nodes ],
214214    abcast .
215215
216216-spec  sbcast (atom (), term ()) ->  {list (), list ()}.
@@ -330,18 +330,14 @@ handle_cast(Msg, #state{socket=Socket, driver=Driver} = State) ->
330330    {stop , {unknown_cast , Msg }, State }.
331331
332332% % This is the actual CAST handler for CAST
333- handle_info ({{Cast , _M , _F , _A } =  PacketTuple , SendTimeout }, State  =  # state {max_batch_size  =  0 }) when  ? IS_CAST (Cast ) -> 
334-     send_cast (PacketTuple , State , SendTimeout , true );
335- handle_info ({{Cast , _M , _F , _A } =  PacketTuple , SendTimeout }, State  =  # state {max_batch_size  =  MaxBatchSize }) when  ? IS_CAST (Cast ) -> 
336-     send_cast (drain_cast (MaxBatchSize , [PacketTuple ]), State , SendTimeout , true );
337- 
338- % % This is the actual CAST handler for ABCAST
339- handle_info ({{abcast ,_Name ,_Msg } =  PacketTuple , undefined }, State ) -> 
340-     send_cast (PacketTuple , State , undefined , false );
333+ handle_info ({PacketTuple , SendTimeout }, State  =  # state {max_batch_size  =  0 }) when  ? IS_CAST_MSG (PacketTuple ) -> 
334+     send_cast (PacketTuple , State , SendTimeout );
335+ handle_info ({PacketTuple , SendTimeout }, State  =  # state {max_batch_size  =  MaxBatchSize }) when  ? IS_CAST_MSG (PacketTuple ) -> 
336+     send_cast (drain_cast (MaxBatchSize , [PacketTuple ]), State , SendTimeout );
341337
342338% % This is the actual CAST handler for SBCAST
343339handle_info ({{sbcast ,_Name ,_Msg ,_Caller } =  PacketTuple , undefined }, State ) -> 
344-     send_cast (PacketTuple , State , undefined ,  true );
340+     send_cast (PacketTuple , State , undefined );
345341
346342% % Handle any TCP packet coming in
347343handle_info ({Driver ,Socket ,Data }, # state {socket = Socket , driver = Driver , driver_mod = DriverMod } =  State ) -> 
@@ -420,7 +416,7 @@ terminate(_Reason, #state{keepalive=KeepAlive}) ->
420416% %% ===================================================
421417% %% Private functions
422418% %% ===================================================
423- send_cast (PacketTuple , # state {socket = Socket , driver = Driver , driver_mod = DriverMod } =  State , SendTimeout ,  Activate ) -> 
419+ send_cast (PacketTuple , # state {socket = Socket , driver = Driver , driver_mod = DriverMod } =  State , SendTimeout ) -> 
424420    ? tp_ignore_side_effects_in_prod (
425421        gen_rpc_send_packet , #{ packet   =>  PacketTuple 
426422                              , timeout  =>  SendTimeout 
@@ -439,10 +435,7 @@ send_cast(PacketTuple, #state{socket=Socket, driver=Driver, driver_mod=DriverMod
439435                                       }),
440436            {stop , Reason , State };
441437        ok  ->
442-             ok  =  case  Activate  of 
443-                      true  -> DriverMod :activate_socket (Socket );
444-                      _     -> ok 
445-                  end ,
438+             ok  =  DriverMod :activate_socket (Socket ),
446439            ? log (debug , " message=cast event=transmission_succeeded driver=~s  socket=\" ~s \" " 
447440                 [Driver , gen_rpc_helper :socket_to_string (Socket )]),
448441            {noreply , State , gen_rpc_helper :get_inactivity_timeout (? MODULE )}
@@ -578,12 +571,21 @@ drain_cast(N, CastReqs) ->
578571    receive 
579572        {? CAST (_M ,_F ,_A ) =  Req , _ } ->
580573            drain_cast (N - 1 , [Req  | CastReqs ]);
574+         {? ABCAST (_N , _M ) =  Req , _ } ->
575+             drain_cast (N - 1 , [Req  | CastReqs ]);
581576        {? ORDERED_CAST (_M , _F , _A ) =  Req , _ } ->
582577            drain_cast (N - 1 , [Req  | CastReqs ])
583578    after  0  ->
584579        lists :reverse (CastReqs )
585580    end .
586581
582+ do_abcast ({Node , _Tag }, Name , Msg ) when  Node  =:=  node () -> 
583+     Msg  =  erlang :send ({Name , Node }, Msg );
584+ do_abcast (Node , Name , Msg ) when  Node  =:=  node () -> 
585+     Msg  =  erlang :send ({Name , Node }, Msg );
586+ do_abcast (Node , Name , Msg ) -> 
587+     erlang :spawn (? MODULE , cast_worker , [Node , {abcast ,Name ,Msg }, abcast , undefined ]).
588+ 
587589- spec  maybe_start_client (node_or_tuple ()) ->  {ok , pid ()} | {error , any ()}.
588590maybe_start_client (NodeOrTuple ) -> 
589591    % % Create a unique name for the client because we register as such
0 commit comments