>> 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