[erlang-questions] Implement standard API (was process hierarchy and passing references)

Federico Carrone <>
Fri Aug 15 22:04:33 CEST 2014

Even if in this case I would not use inheritance, I think you should check
mixer: https://github.com/opscode/mixer. It let's you use mixins, aka do
not type the same code for two different modules that share some
functionality (cowboy endpoints for example).


On Fri, Aug 15, 2014 at 6:49 AM, Frans Schneider <>

> Hi list,
> Now that I got the supervision working, I am looking for a way to
> implement a standard API for every "main" server. The API implements a way
> for the main gen_server to call the RPC middleman and should also define
> standard callbacks for the main server the middleman can use. The API would
> also use some internal state. In a previous life, I would have used
> inheritance to accomplish this, but how can I do this in Erlang?
> I had a look at the supervisor implementation, but was wondering if there
> is a easier way to accomplish this.
> Thanks
> Frans
> On 08/14/2014 05:16 PM, Ladislav Lenart wrote:
>> Hello again.
>> On 14.8.2014 17:00, Ladislav Lenart wrote:
>>> Hello.
>>> What about the following solution:
>>> * Put all three processes under one supervisor.
>>> * Set its restart strategy to one_for_all.
>> Or rest_for_one. This one may better suite your needs. For more info,
>> refer to
>> the official documentation at: http://www.erlang.org/doc/man/
>> supervisor.html
>>  * Pass supervisor's PID to its children.
>>> * Each worker process can lookup PID of its relevant sibling via
>>> supervisor:which_children/1.
>> HTH,
>> Ladislav Lenart
>>  On 14.8.2014 16:48, Schneider wrote:
>>>> Hi list,
>>>> Since I am very new to Erlang, I am not sure how to layout process
>>>> hierarchies in the following case:
>>>> Besides the domain specific functionality, every program has a RPC
>>>> middleman and an XML-RPC interface, each implemented as gen_servers. In
>>>> the current setup, the main gen_server process starts the RPC middleman,
>>>> passing it its Pid, and the RPC gen_server starts the XML-RPC server
>>>> which is passed the RPC middleman's Pid.
>>>> Using the passed in Pid's, the XML-RPC server can do a
>>>> gen_server:call()/cast() back to the RPC server which on its turn can
>>>> call the main server. Works ok, but I would like to have the RPC
>>>> middleman and XML-RPC controller under the control of a supervisor. The
>>>> main supervisor should start the main gen_server process plus a
>>>> supervisor that on its turn should start the RPC midleman and the
>>>> XML-RPC handler.
>>>> The thing I can't figure out is how the XML-RPC process should find the
>>>> RPC middleman process and how that process should locate the main server
>>>> when using supervision. Since there can be many RPC middlemen and
>>>> XMP-RPC servers around, each belonging to different main servers, naming
>>>> and registering seems a little hard.
>>>> So how to pass references around?
>>>> Any help will be very much appreciated.
>>>> Frans
>>>> _______________________________________________
>>>> erlang-questions mailing list
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>> _______________________________________________
>>> erlang-questions mailing list
>>> http://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140815/6510f936/attachment.html>

More information about the erlang-questions mailing list