note
	description: "[
			Abstract class to dispatch tracing events to user. Tracing events are dispatched
			by calling activate on the TRACING_HANDLER's instance.
		 	For each thread being created a copy of the current tracer object will be
		 	used for the newly created thread to avoid race condition. It is up to the implementer
		 	of the class to ensure proper thread-safety and to properly implement duplicated which
		 	is by default implemented using twin.
	]"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	date: "$Date: 2017-03-23 19:18:26 +0000 (Thu, 23 Mar 2017) $"
	revision: "$Revision: 100033 $"

deferred class interface
	TRACING_HANDLER

feature -- Tracing

	trace (a_type_id: INTEGER_32; a_c_class_name, a_c_feature_name: POINTER; a_depth: INTEGER_32; a_is_entering: BOOLEAN)
			-- Trigger a trace operation from a feature represented by a_c_feature_name defined in
			-- class a_c_class_name and applied to an object of type a_type_id at a call depth a_depth.
			-- If a_is_entering we are entering the routine, otherwise we are exiting it.			
		require
			a_type_id_non_negative: a_type_id >= 0
			a_depth_non_negative: a_depth >= 0

	frozen activate
			-- Register Current to the runtime and for all running threads to handle
			-- all the tracing calls.
		require
			valid_platform: not {PLATFORM}.is_dotnet

	frozen deactivate
			-- Remove runtime tracing for all running threads.
		require
			valid_platform: not {PLATFORM}.is_dotnet
	
feature -- Duplication

	duplicated: like Current
			-- New duplication of Current not necessarly equal to Current. This duplicate
			-- version is used for each new threads to perform tracing.
		ensure
			duplicated_not_void: Result /= Void
	
note
	library: "EiffelBase: Library of reusable components for Eiffel."
	copyright: "Copyright (c) 1984-2017, Eiffel Software and others"
	license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
		Eiffel Software
		5949 Hollister Ave., Goleta, CA 93117 USA
		Telephone 805-685-1006, Fax 805-685-6869
		Website http://www.eiffel.com
		Customer support http://support.eiffel.com
	]"

end -- class TRACING_HANDLER

Generated by ISE EiffelStudio