2006-08-17 Georg Steffers [GST] * src/stream_pool.c src/posix/stream_pool.c src/win32/stream_pool.c include/stream_pool.h include/posix/stream_pool.h include/win32/stream_pool.h src/Makefile.am include/Makefile.am and various others (this is a major change): Sorry, this is in german and much to declarative...this was a thoughts-list that is now realized completely. I will rewrite it when i find the time. OK, ich fang mal wieder damit an meine Gedanken aufzunehmen. Das Problem das ich jetzt bekomme ist, das es streams unter windows nicht gibt...bzw. verschieden arten von streams unterschiedlich gehandhabt werden müssen. Hinzu kommt, das WaitForMultipleObject nur max. 64 Objekte werwalten kann. Will man mehr verwalten muß man das in mehreren streads tun. Daher muß ein stream_pool, anders als andere event listener nicht nur aus einem thread bestehen sondern aus einem pro 64 gleicher streams und einem Kontoll-Thread. (Hmm, für viele andere event listener gilt das gleiche, wenn ich unter Windows mehr als 64 Objekte überwachen will. z.B. der fs_watcher. Gerade beim fs_watcher ist es aber nun so, daß der unter Windows eh komplett anders geschrieben werden muß.) Startet man einen stream_pool_listener, so wird der Kontroll Thread gestartet, welcher seinerseits alle weiteren threads startet. Added man einen stream, so muß zunächst nachgesehen werden ob es bereits einen <> für diesen stream_type gibt der außerdem noch nicht 64 streams enthält, falls es so einen stream pool gibt kann man den stream zu diesem hinzufügen, anderenfalls muß ein neuer stream pool angelegt werden. Nachdem der stream geadded wurde muß nur der stream pool, zu dem der stream hinzugefügt wurde neu gestartet werden. Will man einen stream aus einem stream pool entfernen, so muß dieser zunächst in allen stream pools gesucht werden, dann muß der thread zu dem stream pool in dem sich der stream befindet gestoppt werden woraufhin der stream entfernt werden kann. Danach muß der stream pool thread wieder gestartet werden. Für UNIX brauche ich nur einen einzige thread methode für alle stream pool typen, nämlich die, welche select nutzt. Für Windows muß ich je nach dem welcher Art von streams ein stream pool enthält unterschiedliche thread methoden nutzen: - select für sockets - WaitForMultipleObject für andere (Wie stell ich dabei fest was genau mit dem Objekt passiert ist? OK, für pipes ist das Einfach, da es eh ein Wege Kommunikation ist.) - und möglicherweise noch andere.