class EL_REGULAR_INTERVAL_EVENT_PROCESSOR

(source code)

description

Regular interval event processor

note
	description: "Regular interval event processor"

	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"

	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2022-11-15 19:56:06 GMT (Tuesday 15th November 2022)"
	revision: "5"

class
	EL_REGULAR_INTERVAL_EVENT_PROCESSOR

inherit
	EL_SHARED_THREAD_MANAGER

	EL_THREAD_DEVELOPER_CLASS

create
	make_event_producer, make_bounded_loop_event_producer

feature {NONE} -- Initialization

	make_bounded_loop_event_producer (consumer: EL_REGULAR_INTERVAL_EVENT_CONSUMER; interval, upper_count: INTEGER)
			--
		do
			create regular_event_producer.make_with_interval_and_upper_count (interval, upper_count)
			initialize_processor (consumer)
		end

	make_event_producer (consumer: EL_REGULAR_INTERVAL_EVENT_CONSUMER; interval: INTEGER)
			--
		do
			create regular_event_producer.make_with_interval (interval)
			initialize_processor (consumer)
		end

feature -- Basic operations

	start
			--
		do
			regular_event_producer.start
		end

	stop
			--
		do
			regular_event_producer.stop
		end

feature {NONE} -- Implementation

	initialize_processor (consumer: EL_REGULAR_INTERVAL_EVENT_CONSUMER)
			--
		do
			thread_manager.extend (regular_event_producer)
			regular_event_producer.set_consumer (consumer)
			regular_event_producer.launch
			consumer.launch
		end

feature {NONE} -- Internal attributes

	regular_event_producer: EL_REGULAR_INTERVAL_EVENT_PRODUCER

end