🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217034

Re: Embedded HTTP Server

#217034
From: Maciej Sobczak
Date: Sat, 06 Jun 2020 22:02
22 lines
2918 bytes
> Ogólnie abstrakcja na wątki była by też przydatna, w końcu może ktoś 
> będzie chciał zmienić bibliotekę wątków na inną, tak jak właśnie w 
> FreeRTOS gdzie to nie jest ani win ani posix.

Szkoda prądu. Przecież to jest open-source. Jak ktoś bedzie chciał wymienić standardowe wątki na jakieś inne, to zmienia dosłownie w jednym miejscu to:

            std::thread th(connection_thread, sock);

na co tam potrzebuje, no i może jeszcze sygnaturę wołanej funkcji. Robienie abstrakcji na coś, co jest w jednej linijce, jest po prostu niepotrzebne. Łatwiej zmienić tą jedną linijkę.

A jeszcze łatwiej zauważyć, że std::thread już jest tą abstrakcją - właśnie abstrakcją czegoś natywnego, bez narzucania konkretnego rozwiązania. I dokładnie taki jest sens istnienia tej klasy w std::. Więc jest też opcja podstawienia innej implementacji tejże standardowej klasy.

Znowu - prawdziwy cyrk to stos TCP. To tam są smoki. Przerobienie tego serwera na inne wątki to pikuś, ale przestawienie go na inny stos - i to tak, żeby zachować abstrakcję IOStreams (które są z założenia *blokujące*), to już zupełnie inna zabawa.

> brakuje bibliotek w logiką na cooroutines,

To jest ciekawa uwaga. Pytanie, czy takie podejście ma swoją niszę rynkową, w której mieści się taki przykładowy serwer HTTP.
Bo ja nie jestem przekonany, czy zawsze cały program trzeba robić jedną metodą. Może raczej jest tak, że np. komunikację z urządzeniami fizycznymi można zrobić na coroutinach, ale interfejsu użytkownika już nie warto.

-- 
Maciej Sobczak * http://www.inspirel.com
Technical Details
Message-ID: <6a69d306-af0e-499c-bbdb-e74ae6d72a35o@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <d423a072-9378-441b-ba06-e0657a1fa53bo@googlegroups.com> <rbg2hb$ebs$1@dont-email.me> <42ba89cb-8f2f-40a0-ac17-293f71f43f6fo@googlegroups.com> <rbgtv9$vuf$1@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:49c:: with SMTP id 28mr16434511qkr.168.1591480968093;        Sat, 06 Jun 2020 15:02:48 -0700 (PDT)
X-Received: by 2002:ac8:7296:: with SMTP id v22mr16815147qto.239.1591480967887; Sat, 06 Jun 2020 15:02:47 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sat, 6 Jun 2020 15:02:47 -0700 (PDT)
In-Reply-To: <rbgtv9$vuf$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=213.108.152.51; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 213.108.152.51
References: <d423a072-9378-441b-ba06-e0657a1fa53bo@googlegroups.com> <rbg2hb$ebs$1@dont-email.me> <42ba89cb-8f2f-40a0-ac17-293f71f43f6fo@googlegroups.com> <rbgtv9$vuf$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6a69d306-af0e-499c-bbdb-e74ae6d72a35o@googlegroups.com>
Subject: Re: Embedded HTTP Server
From: Maciej Sobczak <see.my.homepage@gmail.com>
Injection-Date: Sat, 06 Jun 2020 22:02:48 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit