\section{Kieker\label{Kieker}\index{Kieker}}


Wraps Kieker Monitoring functions

\subsection*{SYNOPSIS\label{Kieker_SYNOPSIS}\index{Kieker!SYNOPSIS}}
\begin{verbatim}
 use Kieker;
 my $kieker = Kieker->new();          # Creates a new monitoring instance
\end{verbatim}
\begin{verbatim}
 $kieker->EntryEvent('Foo','Bar');    # Produces a new EntryEvent
\end{verbatim}
\begin{verbatim}
 $kieker->ExitEvent('Foo','Bar');     # Produces a new ExitEvent
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker_DESCRIPTION}\index{Kieker!DESCRIPTION}}


This module encapsulates the Kieker monitoring functions in one module. Upon 
creation the controlling and writing parts are loaded and the singleton
instances are stored.
After that Events can be constructed and written to the active writer.

\subsection*{METHODS\label{Kieker_METHODS}\index{Kieker!METHODS}}
\subsubsection*{\$object = Kieker-$>$new()\label{Kieker__object_Kieker-_new_}\index{Kieker!\$object = Kieker-$>$new()}}


Creates a new Kieker object. Currently takes no parameters for configuration.
Returns the object.

\subsubsection*{\$object-$>$EntryEvent(\$functionName, \$packageName);\label{Kieker__object-_EntryEvent_functionName_packageName_}\index{Kieker!\$object-$>$EntryEvent(\$functionName, \$packageName);}}


Creates and sends out a EntryEvent for a specified functionName in a specified
package. Uses the current timestamp. Returns nothing.

\subsubsection*{\$object-$>$ExitEvent(\$functionName, \$packageName);\label{Kieker__object-_ExitEvent_functionName_packageName_}\index{Kieker!\$object-$>$ExitEvent(\$functionName, \$packageName);}}


Creates and sends out a ExitEvent for a specified functionName in a specified
package. Uses the current timestamp. Returns nothing.

\section{Kieker::Controlling\label{Kieker::Controlling}\index{Kieker::Controlling}}


Provides Controlling mechanisms to Kieker Modules

\subsection*{SYNOPSIS\label{Kieker::Controlling_SYNOPSIS}\index{Kieker::Controlling!SYNOPSIS}}
\begin{verbatim}
 use Kieker::Controlling;
 my $control = Kieker::Controlling->instance();   # Get controlling instance
\end{verbatim}
\begin{verbatim}
 my $trace = $control->getTrace();                # Get current traceID
\end{verbatim}
\begin{verbatim}
 my $orderId = $control->getOrderIndex($trace);   # Get current orderIndex
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Controlling_DESCRIPTION}\index{Kieker::Controlling!DESCRIPTION}}


This module provides controlling methods for Kieker. The main functions are
providing consistent trace and orderIDs. When new traces are created the 
corresponding traceEvents are created and written.

\subsection*{METHODS\label{Kieker::Controlling_METHODS}\index{Kieker::Controlling!METHODS}}
\subsubsection*{\$control = Kieker::Controlling-$>$instance();\label{Kieker::Controlling__control_Kieker::Controlling-_instance_}\index{Kieker::Controlling!\$control = Kieker::Controlling-$>$instance();}}


Returns the singleton instance of Kieker::Controlling. If no instance is defined
a new instance is created.

\subsubsection*{my \$orderId = \$control-$>$getOrderIndex(\$trace);\label{Kieker::Controlling_my_orderId_control-_getOrderIndex_trace_}\index{Kieker::Controlling!my \$orderId = \$control-$>$getOrderIndex(\$trace);}}


Returns the current orderIndex and increments the count. If this is the first 
request a new traceEvent is created and written to the log.

\subsubsection*{my \$trace = \$control-$>$getTrace();\label{Kieker::Controlling_my_trace_control-_getTrace_}\index{Kieker::Controlling!my \$trace = \$control-$>$getTrace();}}


Returns the current traceID. In this version it uses the threadID and relies on
special Apache configuration.

\section{Kieker::Util\label{Kieker::Util}\index{Kieker::Util}}


Kieker utility functions

\subsection*{SYNOPSIS\label{Kieker::Util_SYNOPSIS}\index{Kieker::Util!SYNOPSIS}}
\begin{verbatim}
 use Kieker::Util;
 my $time = Kieker::Util->time();   # Get current time in (pseudo)-nanoseconds
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Util_DESCRIPTION}\index{Kieker::Util!DESCRIPTION}}


This module provides utility functions for other Kieker modules.

\subsection*{METHODS\label{Kieker::Util_METHODS}\index{Kieker::Util!METHODS}}
\subsubsection*{\$time = Kieker::Util-$>$time();\label{Kieker::Util__time_Kieker::Util-_time_}\index{Kieker::Util!\$time = Kieker::Util-$>$time();}}


Returns current time in pseudo nanoseconds. Perl doesn't provide a real
nanosecond timer but only microseconds. Output is formatted to match kieker
time format.
NO REAL NANOSECONDS, MICROSECOND PRECISION.

\section{Kieker::Record::OperationEntryEvent\label{Kieker::Record::OperationEntryEvent}\index{Kieker::Record::OperationEntryEvent}}


Kieker Event to be produced at the start
of a function call.

\subsection*{SYNOPSIS\label{Kieker::Record::OperationEntryEvent_SYNOPSIS}\index{Kieker::Record::OperationEntryEvent!SYNOPSIS}}
\begin{verbatim}
 my $record = Kieker::Record::OperationEntryEvent->new(
                 Kieker::Util->time(),
                 $control->getTrace(),
                 $control->getOrderIndex($control->getTrace()),
                 $functionName,$packageName);
 $writer->write($record->genoutput());
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Record::OperationEntryEvent_DESCRIPTION}\index{Kieker::Record::OperationEntryEvent!DESCRIPTION}}


Generates a OperationEntryEvent. This Event should be generated at the start of
each monitored function.

\subsection*{METHODS\label{Kieker::Record::OperationEntryEvent_METHODS}\index{Kieker::Record::OperationEntryEvent!METHODS}}
\subsubsection*{\$record = Kieker::Record::OperationEntryEvent-$>$new(tstamp, trace, orderIndex, function, package);\label{Kieker::Record::OperationEntryEvent__record_Kieker::Record::OperationEntryEvent-_new_tstamp_trace_orderIndex_function_package_}\index{Kieker::Record::OperationEntryEvent!\$record = Kieker::Record::OperationEntryEvent-$>$new(tstamp, trace, orderIndex, function, package);}}


Creates a new Record. It needs a timestamp, a trace with its corresponding
orderIndex, a function name and a package name.

\subsubsection*{\$string = \$record-$>$genoutput();\label{Kieker::Record::OperationEntryEvent__string_record-_genoutput_}\index{Kieker::Record::OperationEntryEvent!\$string = \$record-$>$genoutput();}}


Serializes the record for output. Returns the serialized form of the record.
Uses the identifier "1" for the event type.

\section{Kieker::Record::OperationExitEvent\label{Kieker::Record::OperationExitEvent}\index{Kieker::Record::OperationExitEvent}}


Kieker Event to be produced at the end
of a function call.

\subsection*{SYNOPSIS\label{Kieker::Record::OperationExitEvent_SYNOPSIS}\index{Kieker::Record::OperationExitEvent!SYNOPSIS}}
\begin{verbatim}
 my $record = Kieker::Record::OperationExitEvent->new(
                 Kieker::Util->time(),
                 $control->getTrace(),
                 $control->getOrderIndex($control->getTrace()),
                 $functionName,$packageName);
 $writer->write($record->genoutput());
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Record::OperationExitEvent_DESCRIPTION}\index{Kieker::Record::OperationExitEvent!DESCRIPTION}}


Generates a OperationExitEvent. This Event should be generated at the end of
each monitored function.

\subsection*{METHODS\label{Kieker::Record::OperationExitEvent_METHODS}\index{Kieker::Record::OperationExitEvent!METHODS}}
\subsubsection*{\$record = Kieker::Record::OperationExitEvent-$>$new(timestamp, trace, orderIndex, function, package);\label{Kieker::Record::OperationExitEvent__record_Kieker::Record::OperationExitEvent-_new_timestamp_trace_orderIndex_function_package_}\index{Kieker::Record::OperationExitEvent!\$record = Kieker::Record::OperationExitEvent-$>$new(timestamp, trace, orderIndex, function, package);}}


Creates a new Record. It needs a timestamp, a trace with its corresponding
orderIndex, a function name and a package name.

\subsubsection*{\$string = \$record-$>$genoutput();\label{Kieker::Record::OperationExitEvent__string_record-_genoutput_}\index{Kieker::Record::OperationExitEvent!\$string = \$record-$>$genoutput();}}


Serializes the record for output. Returns the serialized form of the record.
Uses the identifier "2" for the event type.

\section{Kieker::Record::Trace\label{Kieker::Record::Trace}\index{Kieker::Record::Trace}}


Kieker Event indicating one trace. Gets autocreated by 
Kieker::Controlling.

\subsection*{SYNOPSIS\label{Kieker::Record::Trace_SYNOPSIS}\index{Kieker::Record::Trace!SYNOPSIS}}
\begin{verbatim}
 my $record = Kieker::Record::Trace->new($traceID);
\end{verbatim}
\begin{verbatim}
 $writer->write($record->genoutput());
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Record::Trace_DESCRIPTION}\index{Kieker::Record::Trace!DESCRIPTION}}


Generates a Trace. This Event is autocreated by Kieker::Controlling when a new
trace is started.

\subsection*{METHODS\label{Kieker::Record::Trace_METHODS}\index{Kieker::Record::Trace!METHODS}}
\subsubsection*{\$record = Kieker::Record::Trace-$>$new(\$traceID);\label{Kieker::Record::Trace__record_Kieker::Record::Trace-_new_traceID_}\index{Kieker::Record::Trace!\$record = Kieker::Record::Trace-$>$new(\$traceID);}}


Creates a new trace with the given trace ID.

\subsubsection*{\$string = \$record-$>$genoutput();\label{Kieker::Record::Trace__string_record-_genoutput_}\index{Kieker::Record::Trace!\$string = \$record-$>$genoutput();}}


Serializes the record for output. Returns the serialized form of the record.
Uses the identifier "3" for the event type.

\section{Kieker::Writer::FileWriter\label{Kieker::Writer::FileWriter}\index{Kieker::Writer::FileWriter}}


Provides a Kieker Writer for file output.

\subsection*{SYNOPSIS\label{Kieker::Writer::FileWriter_SYNOPSIS}\index{Kieker::Writer::FileWriter!SYNOPSIS}}
\begin{verbatim}
 use Kieker::Writer::FileWriter;
 my $writer = Kieker::Writer::FileWriter->instance();
                                      # Get writer instance
\end{verbatim}
\begin{verbatim}
 $writer->write($string);             # writes string to the current file
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Writer::FileWriter_DESCRIPTION}\index{Kieker::Writer::FileWriter!DESCRIPTION}}


Writes Kieker records to a Logfile. Can also be used to write other strings to
log files.

\subsection*{METHODS\label{Kieker::Writer::FileWriter_METHODS}\index{Kieker::Writer::FileWriter!METHODS}}
\subsubsection*{\$writer = Kieker::Writer::FileWriter-$>$instance();\label{Kieker::Writer::FileWriter__writer_Kieker::Writer::FileWriter-_instance_}\index{Kieker::Writer::FileWriter!\$writer = Kieker::Writer::FileWriter-$>$instance();}}


Returns the writer singleton instance. Thsi object holds the filehandle 
currently wrinting to. If no instance exists, it is created and a new logfile
is created using the current time for the filename.

\subsubsection*{\$writer-$>$write(STRING);\label{Kieker::Writer::FileWriter__writer-_write_STRING_}\index{Kieker::Writer::FileWriter!\$writer-$>$write(STRING);}}


Writes STRING to the filehandle.

\section{Kieker::Writer::JMSWriter\label{Kieker::Writer::JMSWriter}\index{Kieker::Writer::JMSWriter}}


Provides a Kieker Writer for JMS output.

\subsection*{SYNOPSIS\label{Kieker::Writer::JMSWriter_SYNOPSIS}\index{Kieker::Writer::JMSWriter!SYNOPSIS}}
\begin{verbatim}
 use Kieker::Writer::JMSWriter;
 my $writer = Kieker::Writer::JMSWriter->instance();
                                      # Get writer instance
\end{verbatim}
\begin{verbatim}
 $writer->write($string);             # writes string to JMS
\end{verbatim}
\subsection*{DESCRIPTION\label{Kieker::Writer::JMSWriter_DESCRIPTION}\index{Kieker::Writer::JMSWriter!DESCRIPTION}}


Writes Kieker records to a JMS provider. Can also be used to write other 
strings.

\subsection*{REQUIREMENTS\label{Kieker::Writer::JMSWriter_REQUIREMENTS}\index{Kieker::Writer::JMSWriter!REQUIREMENTS}}


Uses Net::Stomp for the JMS connection.

\subsection*{METHODS\label{Kieker::Writer::JMSWriter_METHODS}\index{Kieker::Writer::JMSWriter!METHODS}}
\subsubsection*{\$writer = Kieker::Writer::JMSWriter-$>$instance();\label{Kieker::Writer::JMSWriter__writer_Kieker::Writer::JMSWriter-_instance_}\index{Kieker::Writer::JMSWriter!\$writer = Kieker::Writer::JMSWriter-$>$instance();}}


Returns the writer singleton instance. Thsi object holds the handle currently 
wrinting to. If no instance exists, it is created and a connection to the JMS
provider is opened. Currently no configuration options are provided and the
location of the provider is static in the source. (localhost:61613)

\subsubsection*{\$writer-$>$write(STRING);\label{Kieker::Writer::JMSWriter__writer-_write_STRING_}\index{Kieker::Writer::JMSWriter!\$writer-$>$write(STRING);}}


Writes STRING to JMS.

