>> Proszę o komentarze. Część tego kodu jest bardzo "tymczasowa", ale
>> oddaje możliwy sposób na takie nawiązywanie połączeń.
>
> Nie podoba mi się dodawanie kolejnej maszyny stanów. Być może nie do
> końca rozumiem, co jest tymczasowe, co docelowe, ale zakładam, że to, co
> wrzuciłeś do libgadu.h tymczasowe nie jest. To, co proponowałeś
> wcześniej, wydawało się w zupełności wystarczające -- jeśli ktoś chce
> proxy, podaje wskaźnik na funkcje łączącą się, a my czekamy na wynik.
> Monitorowanie deskryptorów własnej funkcji łączącej mocno komplikuje.
> Podobnie są zrobione własne resolvery -- nie dajemy dostępu do naszej
> pętli zdarzeń, czekamy tylko na wynik. Nawet gdyby ktoś chciał użyć
> własnego resolvera opartego na adns, i tak musiałby stworzyć nowy wątek.
> Nie powinno być to problemem nawet w jednowątkowych aplikacjach typu ekg
> -- wystarczyłoby we własnej pętli zdarzeń monitorować co tylko się chce.

Na początku chciałem właśnie zrobić dokładnie tak, jak są zrobione
resolvery, ale pojawił się problem właśnie ze zwróceniem danych. Za
każdym razem, aby utworzyć nowe gniazdo potrzebowali byśmy (na chwilę
oczywiście) nowego wątku, który by:
- czekał na odpowiedź z kolejnego nowego wątku (resolvera)
- odbierał ją i tworzył nowe gniazdo
- zwracał deskryptor gniazda, czyli zapisywał jego numer do "swojego"
deskryptora odpowiedzi, tak jak resolver zapisuje adres ip

To będzie działać, ale wydawało mi się, że nie chcemy tworzyć dwóch
nowych wątków na każde jedno nowe gniazdo, więc wpiąłem się w główną
pętlę zdarzeń. Czy może jednak takie rozwiązanie było by OK i mam to
tak zaimplementować?

Ponadto takie tworzenie nowego wątku dla domyślnej funkcji
nawiązującej połączenia brzmi dla mnie jak reimplementacja wątków z
domyślnego resolvera.

Przez najbliższy tydzień będę miał utrudniony dostęp do internetu,
więc pewnie będę odpisywał ze znacznym opóźnieniem.

Pozdrawiam,
Tomek
_______________________________________________
libgadu-devel mailing list
libgadu-devel@lists.ziew.org
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to