ChangeLog 2.66 KB
2006-08-17 Georg Steffers [GST] <georg@steffers.org>

	* 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 <<stream pool>> 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.