Simplified socket creation and handling
Jarl André" <jarl.andre at gmail.com>
Jarl André" <jarl.andre at gmail.com>
Wed May 23 12:24:52 PDT 2012
On Wednesday, 23 May 2012 at 13:39:09 UTC, Jarl André wrote:
> On Saturday, 19 May 2012 at 20:33:49 UTC, Nathan M. Swan wrote:
>> On Friday, 18 May 2012 at 06:35:59 UTC, Jarl André wrote:
>>> I am a Java developer who is tired of java.nio and similar
>>> complex socket libraries.
>>>
>>> In Java you got QuickServer, the ultimate protocol creation
>>> centered socket library. You don't have to write any channels
>>> and readers and what not. You just instantiate a server,
>>> configures the handlers (fill in classes that extends a
>>> handler interface) and there you go.
>>>
>>> Shouldn't there exist a similar library in any programming
>>> language? Not doing so is assuming that developers always
>>> need control of the lower layers. Its not true. I care about
>>> protocol. Not sockets.
>>>
>>> Is there any abstraction layers in phobos? Or is everything
>>> just as complex as before?
>>
>> Check out arsd:
>> https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff
>>
>> I used cgi.d to make my own server easily (compile with
>> -version=embedded_httpd). If you want more lower-level
>> control, try a ListeningConnectionManager. To see how it's
>> used, look at the code starting on line #1926.
>>
>> It has some pitfalls (e.g. I can't find a good way to stop the
>> server), but it is very nice in _easily_ starting up, with
>> _zero_ config.
>>
>> NMS
>
> Thanks. It looks like a good option.
>
> As it turns out I am very interested in having complete control
> of what type of service I am creating, so a library limiting me
> in some ways are not an option. On the other hand, I have
> investigated the listener example and have found out that I
> needed to generalize it a bit. Make a few interfaces, some
> implementations and my initial goal is to have end user code
> look excactly like QuickServers in Java. Why? Because sometimes
> you need simple command servers, lets say for polling an email
> or checking hardware status on a server and report it back, not
> worrying about blocking and async or whatever about sockets.
>
> Another great advantage of making a "QuickServer" library is
> that its inner content can be replaced in the future without
> the end users knowing about. I have come far in the library
> making, but need some help understanding std.socket:
>
> 1.a. What is SocketSet and why do I need to pass it to
> Socket.select?
> 1.b. I only want to accept new sockets and I think its too much
> code for that
>
> Even if questions is stupid please comment/correct me.
And here it comes:
https://github.com/jarlah/d2-simple-socket-server
This is my object oriented contribution to the problem.
Based on closed/open principe, in that expansion is done by
adding new classes and not modifying the existing code.
Comments are appreciated.
More information about the Digitalmars-d-learn
mailing list