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

Federico Carrone federico.carrone@REDACTED
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).

Regards,
Federico.


On Fri, Aug 15, 2014 at 6:49 AM, Frans Schneider <schneider@REDACTED>
wrote:

> 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
>>>> erlang-questions@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>
>>>>
>>> _______________________________________________
>>> erlang-questions mailing list
>>> erlang-questions@REDACTED
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>>
>>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>



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


More information about the erlang-questions mailing list