/* $Revision: 2 $ $Date: 6/11/04 21:49 $ Copyright © 2004, FSL Technologies Limited. Contact "http://fost3.fsltech.com". */ #ifndef FOST_KPI_HPP #define FOST_KPI_HPP #pragma once #include #include "FOST.yaml.hpp" #ifdef F3UTIL_EXPORTS #define FOST_KPI_HPP_ARCHIVE L"$Archive: /FOST.3/F3Util/FOST.kpi.hpp $" #define FOST_KPI_HPP_REVISION L"$Revision: 2 $" #define FOST_KPI_HPP_DATE L"$Date: 6/11/04 21:49 $" #endif namespace FSLib { namespace Process { class Task; class F3UTIL_DECLSPEC __declspec( novtable ) Manager : public boost::noncopyable { public: Manager( const FSLib::wstring &name ); virtual ~Manager(); virtual void start( const Task & ) const = 0; virtual void done( const Task & ) const = 0; virtual void complete( const Task & ) const = 0; private: friend Task; static void start( const Process::Task &, std::list< init_ptr< const Manager > > & ); private: wstring m_name; Setting m_force; }; class F3UTIL_DECLSPEC Task : public boost::noncopyable { public: enum t_time { e_second, e_minute, e_hour, e_day, e_week, e_year }; static Task &task(); inline Task( const wstring &position ); inline Task( unsigned __int64 number, const wstring &position ); inline Task( const wstring &workUnit, const wstring &position ); inline Task( const wstring &workUnit, unsigned __int64 number, const wstring &position ); inline ~Task(); inline void done( unsigned __int64 amount = 1 ); inline void complete(); Nullable< TimeStamp > eta() const; std::pair< Time::t_seconds, t_time > rate() const; const Period< void > &during() const { return m_during; } const wstring &position() const { return m_position; } const wstring &reference() const { return m_reference; } const Nullable< wstring > &workUnit() const { return m_workUnit; } const Nullable< unsigned __int64 > &work() const { return m_work; } const unsigned __int64 &done() const { return m_done; } private: wstring m_position, m_reference; Period< void > m_during; Nullable< unsigned __int64 > m_work; unsigned __int64 m_done; Nullable< wstring > m_workUnit; std::list< init_ptr< const Manager > > m_managers; }; } template<> F3UTIL_DECLSPEC wstring toString< Process::Task::t_time >( const Process::Task::t_time & t ); } #endif // FOST_KPI_HPP /* $History: FOST.kpi.hpp $ * * ***************** Version 2 ***************** * User: Kirit Date: 6/11/04 Time: 21:49 * Updated in $/FOST.3/F3Util * Added basics of new KPI based logging system. * * ***************** Version 1 ***************** * User: Kirit Date: 4/11/04 Time: 18:07 * Created in $/FOST.3/F3Util * Added initial outline for KPI manager. */