[erlang-questions] gen behaviors and global groups

Serge Aleynikov <>
Thu Aug 28 13:50:42 CEST 2008


Since I haven't seen any follow-up on this question, I'd like to 
rephrase it.  Is there any drawback in applying the attached patch that 
would allow all gen behaviors to specify registered names in given 
global groups?

Serge

Serge Aleynikov wrote:
> Little bugfix in my previous posting below:
> 
> Serge Aleynikov wrote:
>> Currently when using gen_* behaviors the way to reference a 
>> locally/globally registered server is by providing a server name in the 
>> form:
>>
>> 	ServerName = {local,Name} | {global,GlobalName}
>>
>> When the cluster of nodes is partitioned into global groups, there 
>> doesn't seem to be a way to instruct a server to do a global name lookup 
>> in a specific global group.  Unless I am missing something, it looks 
>> like the gen behaviors should allow this types of server names:
>>
>> 	ServerName = {local,Name} | {global,GlobalName} |
>>                       {{group, Group}, GlobalName}
>>
>> Without this third option one would have to do something like this in 
>> order to call a server registered in group G:
>>
> 
> my_function({{group, Group}, Name}, Args) ->
>      case global_group:whereis_name(Group, Name) of
>      Pid when is_pid(Pid) ->
>          my_function(Pid, Args);
>      undefined ->
> 	{error, noproc}
>      end;
> my_function(Name, Args) ->
>      gen_server:call(Name, {my_function, Args}).
> 
>> Shouldn't gen.erl handle this sort of name lookups automatically?
>>
>> Serge

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: gen.erl.diff
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080828/f670bb88/attachment.ksh>


More information about the erlang-questions mailing list