Current section

Files

Jump to
cpg doc cpg_data.html
Raw

doc/cpg_data.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module cpg_data</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module cpg_data</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h3><a name="CPG_Data_Group_Lookups.">CPG Data Group Lookups.</a></h3>
All functions in this module are for using cached cpg data without
sending messages to the cpg scope process.
<p>Copyright © 2011-2018 Michael Truog</p>
<p><b>Version:</b> 1.7.3 Feb 26 2018 17:08:42
------------------------------------------------------------------------</p>
<p><b>Authors:</b> Michael Truog (<a href="mailto:mjtruog at protonmail dot com"><tt>mjtruog at protonmail dot com</tt></a>).</p>
<h2><a name="description">Description</a></h2>
<h3><a name="CPG_Data_Group_Lookups.">CPG Data Group Lookups.</a></h3>
All functions in this module are for using cached cpg data without
sending messages to the cpg scope process. Using this module for
cpg group lookups is equivalent to the lazy destination refresh
methods in CloudI.
<h2><a name="types">Data Types</a></h2>
<h3 class="typedecl"><a name="type-get_members_return">get_members_return()</a></h3>
<p><tt>get_members_return() = {ok, <a href="cpg.html#type-name">cpg:name()</a>, [pid(), ...]} | {error, {no_such_group, <a href="cpg.html#type-name">cpg:name()</a>}}</tt></p>
<h3 class="typedecl"><a name="type-get_pid_error_reason">get_pid_error_reason()</a></h3>
<p><tt>get_pid_error_reason() = {no_process, <a href="cpg.html#type-name">cpg:name()</a>} | {no_such_group, <a href="cpg.html#type-name">cpg:name()</a>}</tt></p>
<h3 class="typedecl"><a name="type-state">state()</a></h3>
<p><tt>state() = {DictI::module(), GroupsData::any()}</tt></p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#get_closest_pid-2">get_closest_pid/2</a></td><td>
<h4><a name="Get_a_group_member,_with_local_pids_given_priority.">Get a group member, with local pids given priority.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_closest_pid-3">get_closest_pid/3</a></td><td>
<h4><a name="Get_a_group_member,_with_local_pids_given_priority_while_excluding_a_specific_pid.">Get a group member, with local pids given priority while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_empty_groups-0">get_empty_groups/0</a></td><td>
<h4><a name="Get_empty_group_storage.">Get empty group storage.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_furthest_pid-2">get_furthest_pid/2</a></td><td>
<h4><a name="Get_a_group_member,_with_remote_pids_given_priority.">Get a group member, with remote pids given priority.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_furthest_pid-3">get_furthest_pid/3</a></td><td>
<h4><a name="Get_a_group_member,_with_remote_pids_given_priority_while_excluding_a_specific_pid.">Get a group member, with remote pids given priority while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_groups-0">get_groups/0</a></td><td>
<h4><a name="Get_the_group_storage.">Get the group storage.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</td></tr>
<tr><td valign="top"><a href="#get_groups-1">get_groups/1</a></td><td>
<h4><a name="Get_the_group_storage_for_a_particular_scope_or_after_a_period_of_time.">Get the group storage for a particular scope or after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</td></tr>
<tr><td valign="top"><a href="#get_groups-2">get_groups/2</a></td><td>
<h4><a name="Get_the_group_storage_for_a_particular_scope_after_a_period_of_time.">Get the group storage for a particular scope after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</td></tr>
<tr><td valign="top"><a href="#get_groups-3">get_groups/3</a></td><td>
<h4><a name="Get_the_group_storage_for_a_particular_scope_and_destination_after_a_period_of_time.">Get the group storage for a particular scope and destination after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</td></tr>
<tr><td valign="top"><a href="#get_local_members-2">get_local_members/2</a></td><td>
<h4><a name="Get_only_the_local_members_of_a_specific_group.">Get only the local members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the
join order, not pid creation time.</td></tr>
<tr><td valign="top"><a href="#get_local_members-3">get_local_members/3</a></td><td>
<h4><a name="Get_only_the_local_members_of_a_specific_group_while_excluding_a_specific_pid.">Get only the local members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the
join order, not pid creation time.</td></tr>
<tr><td valign="top"><a href="#get_local_newest_pid-2">get_local_newest_pid/2</a></td><td>
<h4><a name="Get_the_newest_local_group_member.">Get the newest local group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_local_newest_pid-3">get_local_newest_pid/3</a></td><td>
<h4><a name="Get_the_newest_local_group_member_while_excluding_a_specific_pid.">Get the newest local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_local_oldest_pid-2">get_local_oldest_pid/2</a></td><td>
<h4><a name="Get_the_oldest_local_group_member.">Get the oldest local group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_local_oldest_pid-3">get_local_oldest_pid/3</a></td><td>
<h4><a name="Get_the_oldest_local_group_member_while_excluding_a_specific_pid.">Get the oldest local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_local_pid-2">get_local_pid/2</a></td><td>
<h4><a name="Get_a_local_group_member.">Get a local group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_local_pid-3">get_local_pid/3</a></td><td>
<h4><a name="Get_a_local_group_member_while_excluding_a_specific_pid.">Get a local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_members-2">get_members/2</a></td><td>
<h4><a name="Get_the_members_of_a_specific_group.">Get the members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</td></tr>
<tr><td valign="top"><a href="#get_members-3">get_members/3</a></td><td>
<h4><a name="Get_the_members_of_a_specific_group_while_excluding_a_specific_pid.">Get the members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</td></tr>
<tr><td valign="top"><a href="#get_newest_pid-2">get_newest_pid/2</a></td><td>
<h4><a name="Get_the_newest_group_member.">Get the newest group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_newest_pid-3">get_newest_pid/3</a></td><td>
<h4><a name="Get_the_newest_group_member_while_excluding_a_specific_pid.">Get the newest group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_oldest_pid-2">get_oldest_pid/2</a></td><td>
<h4><a name="Get_the_oldest_group_member.">Get the oldest group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_oldest_pid-3">get_oldest_pid/3</a></td><td>
<h4><a name="Get_the_oldest_group_member_while_excluding_a_specific_pid.">Get the oldest group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_random_pid-2">get_random_pid/2</a></td><td>
<h4><a name="Get_a_group_member.">Get a group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_random_pid-3">get_random_pid/3</a></td><td>
<h4><a name="Get_a_group_member_while_excluding_a_specific_pid.">Get a group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_remote_members-2">get_remote_members/2</a></td><td>
<h4><a name="Get_only_the_remote_members_of_a_specific_group.">Get only the remote members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</td></tr>
<tr><td valign="top"><a href="#get_remote_members-3">get_remote_members/3</a></td><td>
<h4><a name="Get_only_the_remote_members_of_a_specific_group_while_excluding_a_specific_pid.">Get only the remote members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</td></tr>
<tr><td valign="top"><a href="#get_remote_newest_pid-2">get_remote_newest_pid/2</a></td><td>
<h4><a name="Get_the_newest_remote_group_member.">Get the newest remote group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_remote_newest_pid-3">get_remote_newest_pid/3</a></td><td>
<h4><a name="Get_the_newest_remote_group_member_while_excluding_a_specific_pid.">Get the newest remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_remote_oldest_pid-2">get_remote_oldest_pid/2</a></td><td>
<h4><a name="Get_the_oldest_remote_group_member.">Get the oldest remote group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_remote_oldest_pid-3">get_remote_oldest_pid/3</a></td><td>
<h4><a name="Get_the_oldest_remote_group_member_while_excluding_a_specific_pid.">Get the oldest remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#get_remote_pid-2">get_remote_pid/2</a></td><td>
<h4><a name="Get_a_remote_group_member.">Get a remote group member.</a></h4>.</td></tr>
<tr><td valign="top"><a href="#get_remote_pid-3">get_remote_pid/3</a></td><td>
<h4><a name="Get_a_remote_group_member_while_excluding_a_specific_pid.">Get a remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</td></tr>
<tr><td valign="top"><a href="#which_groups-1">which_groups/1</a></td><td>
<h4><a name="Get_all_the_groups_currently_defined.">Get all the groups currently defined.</a></h4>.</td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="get_closest_pid-2">get_closest_pid/2</a></h3>
<div class="spec">
<p><tt>get_closest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member,_with_local_pids_given_priority.">Get a group member, with local pids given priority.</a></h4>
</p>
<h3 class="function"><a name="get_closest_pid-3">get_closest_pid/3</a></h3>
<div class="spec">
<p><tt>get_closest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member,_with_local_pids_given_priority_while_excluding_a_specific_pid.">Get a group member, with local pids given priority while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_empty_groups-0">get_empty_groups/0</a></h3>
<div class="spec">
<p><tt>get_empty_groups() -&gt; <a href="#type-state">state()</a></tt><br></p>
</div><p>
<h4><a name="Get_empty_group_storage.">Get empty group storage.</a></h4>
</p>
<h3 class="function"><a name="get_furthest_pid-2">get_furthest_pid/2</a></h3>
<div class="spec">
<p><tt>get_furthest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member,_with_remote_pids_given_priority.">Get a group member, with remote pids given priority.</a></h4>
</p>
<h3 class="function"><a name="get_furthest_pid-3">get_furthest_pid/3</a></h3>
<div class="spec">
<p><tt>get_furthest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member,_with_remote_pids_given_priority_while_excluding_a_specific_pid.">Get a group member, with remote pids given priority while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_groups-0">get_groups/0</a></h3>
<div class="spec">
<p><tt>get_groups() -&gt; <a href="#type-state">state()</a></tt><br></p>
</div><p>
<h4><a name="Get_the_group_storage.">Get the group storage.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</p>
<h3 class="function"><a name="get_groups-1">get_groups/1</a></h3>
<div class="spec">
<p><tt>get_groups(Scope::atom() | non_neg_integer()) -&gt; <a href="#type-state">state()</a> | reference()</tt><br></p>
</div><p>
<h4><a name="Get_the_group_storage_for_a_particular_scope_or_after_a_period_of_time.">Get the group storage for a particular scope or after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</p>
<h3 class="function"><a name="get_groups-2">get_groups/2</a></h3>
<div class="spec">
<p><tt>get_groups(Scope::atom(), Time::non_neg_integer()) -&gt; reference()</tt><br></p>
</div><p>
<h4><a name="Get_the_group_storage_for_a_particular_scope_after_a_period_of_time.">Get the group storage for a particular scope after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</p>
<h3 class="function"><a name="get_groups-3">get_groups/3</a></h3>
<div class="spec">
<p><tt>get_groups(Scope::atom(), Destination::pid() | atom(), Time::non_neg_integer()) -&gt; reference()</tt><br></p>
</div><p>
<h4><a name="Get_the_group_storage_for_a_particular_scope_and_destination_after_a_period_of_time.">Get the group storage for a particular scope and destination after a period of time.</a></h4>
This provides the internal representation of process groups so that
requests will not be blocked by the single process managing the scope
of the process groups.</p>
<h3 class="function"><a name="get_local_members-2">get_local_members/2</a></h3>
<div class="spec">
<p><tt>get_local_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_only_the_local_members_of_a_specific_group.">Get only the local members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the
join order, not pid creation time.</p>
<h3 class="function"><a name="get_local_members-3">get_local_members/3</a></h3>
<div class="spec">
<p><tt>get_local_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_only_the_local_members_of_a_specific_group_while_excluding_a_specific_pid.">Get only the local members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the
join order, not pid creation time.
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_local_newest_pid-2">get_local_newest_pid/2</a></h3>
<div class="spec">
<p><tt>get_local_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_local_group_member.">Get the newest local group member.</a></h4>
</p>
<h3 class="function"><a name="get_local_newest_pid-3">get_local_newest_pid/3</a></h3>
<div class="spec">
<p><tt>get_local_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_local_group_member_while_excluding_a_specific_pid.">Get the newest local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_local_oldest_pid-2">get_local_oldest_pid/2</a></h3>
<div class="spec">
<p><tt>get_local_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_local_group_member.">Get the oldest local group member.</a></h4>
</p>
<h3 class="function"><a name="get_local_oldest_pid-3">get_local_oldest_pid/3</a></h3>
<div class="spec">
<p><tt>get_local_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_local_group_member_while_excluding_a_specific_pid.">Get the oldest local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_local_pid-2">get_local_pid/2</a></h3>
<div class="spec">
<p><tt>get_local_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_local_group_member.">Get a local group member.</a></h4>
</p>
<h3 class="function"><a name="get_local_pid-3">get_local_pid/3</a></h3>
<div class="spec">
<p><tt>get_local_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_local_group_member_while_excluding_a_specific_pid.">Get a local group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_members-2">get_members/2</a></h3>
<div class="spec">
<p><tt>get_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_the_members_of_a_specific_group.">Get the members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</p>
<h3 class="function"><a name="get_members-3">get_members/3</a></h3>
<div class="spec">
<p><tt>get_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_the_members_of_a_specific_group_while_excluding_a_specific_pid.">Get the members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_newest_pid-2">get_newest_pid/2</a></h3>
<div class="spec">
<p><tt>get_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_group_member.">Get the newest group member.</a></h4>
</p>
<h3 class="function"><a name="get_newest_pid-3">get_newest_pid/3</a></h3>
<div class="spec">
<p><tt>get_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_group_member_while_excluding_a_specific_pid.">Get the newest group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_oldest_pid-2">get_oldest_pid/2</a></h3>
<div class="spec">
<p><tt>get_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_group_member.">Get the oldest group member.</a></h4>
</p>
<h3 class="function"><a name="get_oldest_pid-3">get_oldest_pid/3</a></h3>
<div class="spec">
<p><tt>get_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_group_member_while_excluding_a_specific_pid.">Get the oldest group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_random_pid-2">get_random_pid/2</a></h3>
<div class="spec">
<p><tt>get_random_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member.">Get a group member.</a></h4>
</p>
<h3 class="function"><a name="get_random_pid-3">get_random_pid/3</a></h3>
<div class="spec">
<p><tt>get_random_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_group_member_while_excluding_a_specific_pid.">Get a group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_remote_members-2">get_remote_members/2</a></h3>
<div class="spec">
<p><tt>get_remote_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_only_the_remote_members_of_a_specific_group.">Get only the remote members of a specific group.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).</p>
<h3 class="function"><a name="get_remote_members-3">get_remote_members/3</a></h3>
<div class="spec">
<p><tt>get_remote_members(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; <a href="#type-get_members_return">get_members_return()</a></tt><br></p>
</div><p>
<h4><a name="Get_only_the_remote_members_of_a_specific_group_while_excluding_a_specific_pid.">Get only the remote members of a specific group while excluding a specific pid.</a></h4>
All members are ordered from newest to oldest, based on the group
membership surviving netsplits (join order, not pid creation time).
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_remote_newest_pid-2">get_remote_newest_pid/2</a></h3>
<div class="spec">
<p><tt>get_remote_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_remote_group_member.">Get the newest remote group member.</a></h4>
</p>
<h3 class="function"><a name="get_remote_newest_pid-3">get_remote_newest_pid/3</a></h3>
<div class="spec">
<p><tt>get_remote_newest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_newest_remote_group_member_while_excluding_a_specific_pid.">Get the newest remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_remote_oldest_pid-2">get_remote_oldest_pid/2</a></h3>
<div class="spec">
<p><tt>get_remote_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_remote_group_member.">Get the oldest remote group member.</a></h4>
</p>
<h3 class="function"><a name="get_remote_oldest_pid-3">get_remote_oldest_pid/3</a></h3>
<div class="spec">
<p><tt>get_remote_oldest_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_the_oldest_remote_group_member_while_excluding_a_specific_pid.">Get the oldest remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="get_remote_pid-2">get_remote_pid/2</a></h3>
<div class="spec">
<p><tt>get_remote_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_remote_group_member.">Get a remote group member.</a></h4>
</p>
<h3 class="function"><a name="get_remote_pid-3">get_remote_pid/3</a></h3>
<div class="spec">
<p><tt>get_remote_pid(GroupName::<a href="cpg.html#type-name">cpg:name()</a>, Exclude::pid(), Groups::<a href="#type-state">state()</a>) -&gt; {ok, <a href="cpg.html#type-name">cpg:name()</a>, pid()} | {error, <a href="#type-get_pid_error_reason">get_pid_error_reason()</a>}</tt><br></p>
</div><p>
<h4><a name="Get_a_remote_group_member_while_excluding_a_specific_pid.">Get a remote group member while excluding a specific pid.</a></h4>
Usually the self() pid is excluded with this function call.</p>
<h3 class="function"><a name="which_groups-1">which_groups/1</a></h3>
<div class="spec">
<p><tt>which_groups(X1::<a href="#type-state">state()</a>) -&gt; [<a href="cpg.html#type-name">cpg:name()</a>]</tt><br></p>
</div><p>
<h4><a name="Get_all_the_groups_currently_defined.">Get all the groups currently defined.</a></h4>
</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Feb 26 2018, 17:08:42.</i></p>
</body>
</html>