The Stream Handler plugin takes a data buffer from the queue, determines which Stream it belongs to, and puts it on the data queue for that Stream. If there is no existing Stream, it creates a new one. The application plugin code may then check to see if there are associated Streams (defined by the application), and have them added to a circular queue. The Stream Handler notifies the Stream Analyzers that there is data to be processed by putting a Stream Analysis Work Element (SAWE) on a queue for each of those plugins. The application may check the data to determine if the Stream is complete and if so, puts the Stream SAWE on the Complete SAWE queue for the Action Analyzer. It also periodically checks a timer queue, and if the Stream has timed out (a configurable value), puts the Stream SAWE on the Complete SAWE queue. It is possible for Streams to be passed to the Action Analyzer before they are fully complete. The Stream Handler checks the amount of data processed, and if it exceeds the maximum allowed, puts the Stream SAWE on the Complete SAWE queue. It then monitors a Continue queue for Streams that are ready for further processing. |