Packages
partisan
5.0.2
5.0.3
5.0.2
5.0.1
5.0.0
5.0.0-rc.16
5.0.0-rc.8
5.0.0-rc.2
5.0.0-rc.1
5.0.0-beta.24
5.0.0-beta.21
5.0.0-beta.20
5.0.0-beta.18
5.0.0-beta.17
5.0.0-beta.16
5.0.0-beta.15
5.0.0-beta.14
5.0.0-beta.13
4.1.0
3.0.0
2.1.0
2.0.0
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.2
1.0.1
1.0.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
0.0.1
Partisan is a scalable and flexible, TCP-based membership system and distribution layer for the BEAM.
Current section
Files
Jump to
Current section
Files
src/partisan_transformed_module.erl
%% -------------------------------------------------------------------
%%
%% Copyright (c) 2018 Christopher S. Meiklejohn. All Rights Reserved.
%%
%% This file is provided to you under the Apache License,
%% Version 2.0 (the "License"); you may not use this file
%% except in compliance with the License. You may obtain
%% a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%% KIND, either express or implied. See the License for the
%% specific language governing permissions and limitations
%% under the License.
%%
%% -------------------------------------------------------------------
%% @author Christopher Meiklejohn <christopher.meiklejohn@gmail.com>
%% @copyright 2013 Christopher Meiklejohn.
%% @doc
%%
%% Ringleader parse transformation.
%%
%% First pass of a ringleader parse transformation to write send calls
%% to use ringleader.
%%
-module(partisan_transformed_module).
-author("Christopher S. Meiklejohn <christopher.meiklejohn@gmail.com>").
-include("partisan_logger.hrl").
-export([local_send/1]).
-export([get_pid/0]).
-export([send_to_pid/2]).
-compile([{parse_transform, partisan_transform}]).
%% =============================================================================
%% API
%% =============================================================================
local_send(Message) ->
Pid = self(),
?LOG_DEBUG("Local pid is: ~p", [Pid]),
Pid ! Message,
receive
Message ->
Message
after
1000 ->
error
end.
get_pid() ->
self().
send_to_pid(Pid, Message) when is_pid(Pid) ->
Pid ! Message;
send_to_pid(Ref, Message) ->
Node = partisan_remote_ref:node(Ref),
case Node == partisan:node() of
true ->
{encoded_pid, List} = partisan_remote_ref:target(Ref),
send_to_pid(list_to_pid(List), Message);
false ->
partisan:forward_message(Ref, Message)
end.