[erlang-questions] Can gen_tcp/inets store connection-specific user state?

Tony Rogvall <>
Tue Jul 20 00:48:26 CEST 2010


Why not use a global ets table? (use socket/port as a key)
If you would attach any kind of data to a socket you would have to copy it any how...
(There is a hidden way of doing it, but it's already taken by inet ;-)

/Tony


On 19 jul 2010, at 19.51, Tony Arcieri wrote:

> On Fri, Jul 16, 2010 at 6:41 AM, Juan Jose Comellas <>wrote:
> 
>> The beauty of Erlang is precisely that you don't have to worry about this.
> 
> 
> That seems to be a common reaction when I pose a question in this manner.  I
> would suggest that round tripping lots of explicit state is very much the
> norm of Erlang, and while that's a bit ugly IMO, here I'm running into a
> case where I'd like to do it where it isn't possible.
> 
> Why are you worried about having one Erlang process per connection?
>> 
> 
> I already spelled that out in my previous email, but beyond that, they are
> unneeded in this case and add additional overhead.  The requirement to use a
> process is imposed only by the design of the gen_tcp/inets APIs.
> 
> It seems like attaching a single piece of immutable state to each connection
> is going to add a lot of complexity.  In order to expose a sequential,
> side-effect based API to the end user, I'm going to have to proxy all
> communication between inets and the end user, and also provide process
> management.
> 
> Let's just say I consider this an unparsimonious and inelegant solution with
> more overhead than leveraging the end-to-end potential for associating
> connection specific state with particular sockets.
> 
> -- 
> Tony Arcieri
> Medioh! A Kudelski Brand



More information about the erlang-questions mailing list