[erlang-questions] Avoiding boilerplate code when using gen_server

Torben Hoffmann torben.lehoff@REDACTED
Wed Mar 21 12:48:38 CET 2012


Hi,

I was sitting with a co-worker - who is proficient in OCaml and lots of 
other stuff and he is now learning Erlang - and then he comes up with a 
good question on the amount of boilerplate code when implementing a 
gen_server.

 From the API functions you call out to gen_server:call/2 and on top of 
that you need to implement a handle_call/3 function clause that matches 
whatever format you used for wrapping the incoming message.

The question was: why don't you use an IDL (Interface Definition 
Language) approach instead of writing all that code that has to match up 
in order to work?

So the idea would be to write a my_server.idl file and from that 
generate two files:

  * my_server_stub.erl
      o This holds all the public APIs that clients may call.
      o It calls my_server_skeleton as dictated by the IDL file.
  * my_server_skeleton.erl
      o gets all all the calls from the my_server_stub and calls
        my_server.erl

The job then is to implement my_server.erl according to the type specs 
derived from the IDL file.

Has anyone looked into this before?
I have tried searching for it, but since IDL is so tightly coupled with 
CORBA I didn't really find anything but the ic application from the 
Erlang/OTP distribution.

Cheers,
Torben

-- 
http://www.linkedin.com/in/torbenhoffmann

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120321/ea95bcc2/attachment.htm>


More information about the erlang-questions mailing list