D simple web server
gedaiu
szabobogdan at yahoo.com
Tue Sep 3 05:08:57 PDT 2013
Thanks for reply,
@Adam D. Ruppe I ignored your collection of tools but is not very
good documented...
@Rémy Mouëza When I started my project, I wanted to use mongoose
but there where no bindings for D at that time, so I decided to
use a simpler web server, libmicrohttpd, but it was not the best
solution because my server where crashing all the time, so I
decided to create one from scratch in D.
I made an update to the code and I added the option to initialize
the terver using delegates.
Thanks,
Bogdan
On Saturday, 31 August 2013 at 18:44:47 UTC, Rémy Mouëza wrote:
> Your code seems rather nice.
>
> That said, here are some remarks of a purely stylistic nature
> :-) :
>
> - You can use "foreach" instead of "for" to simplify your loop
> statements over arrays and other collections:
> auto array = [1, 2, 3];
> foreach (item; array) {
> writeln (item);
> }
>
> foreach can also support indexed iteration of your items:
> auto array = ["a", "b", "c"];
> foreach (index, item; array) {
> writefln ("%d: %s", index, item);
> }
>
> and if you just want to iterate a certain amount of time, you
> can use ranges:
> foreach (index; 1..100) {
> writeln (index);
> }
>
> - You don't have to put each class in a different file: you
> still can do if you prefer it that way.
>
> - I tend to prefer to have class members of same visibility
> grouped together under a "public:", "protected:" or "private:"
> block, either using the colon or the braces instead of always
> specifying the visibility - this kind of help me better
> understand what will be useful when using the class.
>
> - Associative arrays can be initialized with literals, so
> instead of having lots of:
> status_message[100] = "Continue";
> status_message[101] = ...
> ...
> status_message[505] = "HTTP Version not supported";
>
> you can use:
> status_message = [
> 100: "Continue",
> 101: ...
> 505: "HTTP Version not supported"
> ];
>
> which I find more concise.
>
> - You can also use unified function calls:
> instead of: to!string(port)
> you can do: port.to!string
> the latter having a more "English" feel when reading.
>
> Again, these are purely stylistic considerations, D's
> flexibility allows you to choose from many styles.
>
>
> On a design standpoint, I would have preferred a delegate for
> the processRequest() method instead of requiring the users to
> derive from the WebServer class - on second thought, that may
> too be a stylistic issue :-) .
>
>
> Also related: I have started to write some high level bindings
> to the Mongoose embedded webserver library, written in C (using
> Jacob Carlsberg's dstep for the low level bindings). The source
> code is available here:
> https://github.com/remy-j-a-moueza/mongooseD .
> You may find some stuff to reuse or get inspiration from for
> your server.
>
> Adam Ruppe also has a lot of interesting tools beyond the basic
> web serving that you may get interested in
> (https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff).
>
>
>
> On 08/31/2013 06:42 PM, gedaiu wrote:
>> Hi,
>>
>> Because I have a personal project based on a custom web
>> server, and I
>> couldn't find one implemented in D(excepting vibe.d), I
>> started to
>> implement some web server classes in D with the hope that my
>> work will
>> be useful to someone else as well. If you are interested in
>> this
>> project, or if you want to contribute to it, here is the link
>> to the git
>> repository:
>>
>> https://github.com/gedaiu/DSWS
>>
>> Also, I don't have a lot of experience with D and I would
>> apreciate if
>> someone would like to spare some time for a code review for my
>> work.
>>
>> Thanks,
>> Bogdan
More information about the Digitalmars-d-announce
mailing list