eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingEmbedded HTTP Server › Re: Embedded HTTP Server
  • X-Received: by 2002:ac8:2b98:: with SMTP id m24mr16348788qtm.7.1591470005682; Sat, 06
    Jun 2020 12:00:05 -0700 (PDT)
    X-Received: by 2002:ac8:2b98:: with SMTP id m24mr16348788qtm.7.1591470005682; Sat, 06
    Jun 2020 12:00:05 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.r
    u!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.goog
    le.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-f
    or-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 6 Jun 2020 12:00:05 -0700 (PDT)
    In-Reply-To: <3...@g...com>
    Complaints-To: g...@g...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: <d...@g...com>
    <3...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <7...@g...com>
    Subject: Re: Embedded HTTP Server
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Sat, 06 Jun 2020 19:00:05 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 77
    Xref: news-archive.icm.edu.pl pl.comp.programming:214949
    [ ukryj nagłówki ]


    > Po pierwsze, to aż się prosi, żeby ten serwer był zwykłą klasą. Czemu ktoś nie
    miałby sobie stworzyć 5 serwisów WWW działających na różnych portach?

    No właśnie. I tu poruszamy ważną kwestię. Bo piszesz, że aż się prosi, ale potem
    okazuje się, że nikt nie prosi, tylko czemu ktoś by miał nie prosić.

    A mi chodziło o to, żeby pakiet 1.0 przekroczył próg używalności a nie o to, żeby
    rozwiązać problemy typu "czemy ktoś nie miałby".

    Natomiast, nic nie stoi na przeszkodzie, żeby sobie zawołać funkcję server_start() 5
    razy z różnymi portami, z 5 różnych wątków, bo ta funkcja i tak nie ma stanu
    globalnego. Nie trzeba mieć do tego klasy.

    > Po drugie, nie ma sposobu na zamknięcie serwera, poza zabiciem procesu. Chyba, że
    ja czegoś nie widzę.

    Tak. Funkcja server_stop() już istniała, ale ją usunąłem. To nie jest oczywiste, jak
    zamknąć serwer, który ma callbacki, niektóre zapewne w trakcie pracy.
    Wszystkie problemy da się rozwiązać, ale nie o to chodziło w wersji 1.0.

    > Mówiąc o API: 6 wariantów register_{generic,html,text}_{post,get}_action można by
    sprowadzić do 2. register_action(const char* name, {post_action_type,
    get_action_type} callback, const char* mime_type).

    Nie, bo po pierwsze generic i html różnią się obsługą a po drugie nie chciałem
    przeciążać funkcji register, bo bardziej naturalne wydaje mi się przeciążenie funkcji
    akcji dla get i post:

    void my_action(to-co-trzeba-dla-get) { ... }
    void my_action(to-co-trzeba-dla-post) { ... }

    I wtedy nie dałoby rady:

    register(my_action);

    > Zresztą, może lepiej byłoby przyjmować jako argument mapę akcji - czyli to co masz
    teraz w get_actions/post_actions. Niech user sobie przygotuje takie mapy w sposób,
    jaki mu pasuje, a ty pozbędziesz się potrzeby blokowania tych struktur.

    Ale teraz obsługa jest prostsza, właśnie dlatego, że user nie musi robić takich map.
    Można by było pomyśleć o akcji catch-all. Tam user dostawałby wszystko (co nie było
    obsłużone) i mógłby sobie tam zrobić takie mapy, jakie zechce.

    > Czasem funkcje przyjmują const char*, czase std::string& co jest niespójne.

    Bo chodziło o przewidywane użycie. Tam gdzie przewidywałem literał, jest const char*.

    > W ogóle nie walidujesz, czy wskaźniki są niepuste. Tak samo z std::function.

    A po co? Bez przesady z tą walidacją. Walidować należy input z zewnątrz (i nawet
    opisałem to w przykładzie 3, z parametrami) a nie własne literały.

    > Zero testów. Serio? :)

    Są testy. W katalogu, który dla zmylenia przeciwnika nazywa się examples. :-)

    A jakieś inne testy byś chciał?

    --
    Maciej Sobczak * http://www.inspirel.com

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: