text: //----------------------------------------------------------------------------
  //
  //  Copyright (c) Intel Corporation, 2003 - 2012  All Rights Reserved.
  //
  //  File:       CIM_RecordLog.h
  //
  //  Contents:   RecordLog serves as an aggregation point for LogRecord objects. This class presents a higher level view of a log than its peer class MessageLog (which uses iterators) and introduces a new key structure. Access to records in this log is achieved through the use of the standard CIM Operations defined as part of WBEM.
  //
  //              This file was automatically generated from CIM_RecordLog.mof,  version: 2.19.0
  //
  //----------------------------------------------------------------------------
  #ifndef CIM_RECORDLOG_H
  #define CIM_RECORDLOG_H 1
  #include "CIM_Log.h"
  namespace Intel
  {
  namespace Manageability
  {
  namespace Cim
  {
  namespace Typed 
  {
  	// RecordLog serves as an aggregation point for LogRecord objects. This class presents a higher level view of a log than its peer class MessageLog (which uses iterators) and introduces a new key structure. Access to records in this log is achieved through the use of the standard CIM Operations defined as part of WBEM.
  	class CIMFRAMEWORK_API CIM_RecordLog  : public CIM_Log
  	{
  	public:
  
  		//Default constructor
  		CIM_RecordLog()
  			: CIM_Log(NULL, CLASS_NAME, CLASS_NS, CLASS_NS_PREFIX, CLASS_URI)
  		{
  			if(_classMetaData.size() == 0)
  			{
  				CIM_Log::SetMetaData(_classMetaData);
  				CimBase::SetMetaData(_classMetaData, _metadata, 1);
  			}
  		}
  
  		//constructor which receives WSMan client
  		CIM_RecordLog(ICimWsmanClient *client)
  			: CIM_Log(client, CLASS_NAME, CLASS_NS, CLASS_NS_PREFIX, CLASS_URI)
  		{
  			if(_classMetaData.size() == 0)
  			{
  				CIM_Log::SetMetaData(_classMetaData);
  				CimBase::SetMetaData(_classMetaData, _metadata, 1);
  			}
  		}
  
  		//Destructor
  		virtual ~CIM_RecordLog(){}
  
  		// The "type" information for the object. Gettors only.
  		virtual const string& ResourceURI() const { return CLASS_URI; }
  		static const string& ClassResourceURI() { return CLASS_URI; }
  		virtual const string& XmlNamespace() const { return CLASS_NS; }
  		virtual const string& XmlPrefix() const { return CLASS_NS_PREFIX; }
  		virtual const string& ObjectType() const { return CLASS_NAME; }
  		static const string& ClassObjectType() { return CLASS_NAME; }
  
  		// Class representing CIM_RecordLog keys
  		class CimKeys : public CIM_Log::CimKeys
  		{
  		public:
  			// Key, Required, Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. 
  			// In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following 'preferred' algorithm: 
  			// <OrgID>:<LocalID> 
  			// Where <OrgID> and <LocalID> are separated by a colon ':', and where <OrgID> MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity creating/defining the InstanceID, or is a registered ID that is assigned to the business entity by a recognized global authority (This is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness <OrgID> MUST NOT contain a colon (':'). When using this algorithm, the first colon to appear in InstanceID MUST appear between <OrgID> and <LocalID>. 
  			// <LocalID> is chosen by the business entity and SHOULD not be re-used to identify different underlying (real-world) elements. If the above 'preferred' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance's NameSpace. 
  			// For DMTF defined instances, the 'preferred' algorithm MUST be used with the <OrgID> set to 'CIM'.
  			const string InstanceID() const
  			{
  				return GetKey("InstanceID");
  			}
  
  			// Key, Required, Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. 
  			// In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following 'preferred' algorithm: 
  			// <OrgID>:<LocalID> 
  			// Where <OrgID> and <LocalID> are separated by a colon ':', and where <OrgID> MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity creating/defining the InstanceID, or is a registered ID that is assigned to the business entity by a recognized global authority (This is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness <OrgID> MUST NOT contain a colon (':'). When using this algorithm, the first colon to appear in InstanceID MUST appear between <OrgID> and <LocalID>. 
  			// <LocalID> is chosen by the business entity and SHOULD not be re-used to identify different underlying (real-world) elements. If the above 'preferred' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance's NameSpace. 
  			// For DMTF defined instances, the 'preferred' algorithm MUST be used with the <OrgID> set to 'CIM'.
  			void InstanceID(const string &value)
  			{
  				SetOrAddKey("InstanceID", value);
  			}
  
  		};
  		// Requests that the Log be cleared of all entries. 
  		// The return value should be 0 if the request was successfully executed, 1 if the request is not supported, and some other value, as indicated by the ValueMap/Values qualifiers, if an error occurred.
  		virtual unsigned int ClearLog();
  
  		//Input parameter for function RequestStateChange
  		class CIMFRAMEWORK_API RequestStateChange_INPUT : public CimParam
  		{
  		public:
  			// Class Constructor
  			RequestStateChange_INPUT() : CimParam() {}
  
  			// Class Destructor
  			~RequestStateChange_INPUT(){}
  
  			// Optional, The state requested for the element. This information will be placed into the RequestedState property of the instance if the return code of the RequestStateChange method is 0 ('Completed with No Error'), or 4096 (0x1000) ('Job Started'). Refer to the description of the EnabledState and RequestedState properties for the detailed explanations of the RequestedState values.
  			// Legal values:
  			// Enabled: 2
  			// Disabled: 3
  			// Shut Down: 4
  			// Offline: 6
  			// Test: 7
  			// Defer: 8
  			// Quiesce: 9
  			// Reboot: 10
  			// Reset: 11
  			// DMTF Reserved: ..
  			// Vendor Reserved: 32768..65535
  			void RequestedState(const unsigned short value); 
  
  			// Optional, A timeout period that specifies the maximum amount of time that the client expects the transition to the new state to take. The interval format must be used to specify the TimeoutPeriod. A value of 0 or a null parameter indicates that the client has no time requirements for the transition. 
  			// If this property does not contain 0 or null and the implementation does not support this parameter, a return code of 'Use Of Timeout Parameter Not Supported' shall be returned.
  			void TimeoutPeriod(const CimDateTime &value); 
  
  			const VectorFieldData GetAllFields() const;
  		private:
  			static const CimFieldAttribute _metadata[];
  		};
  
  		//Output parameter for function RequestStateChange
  		class CIMFRAMEWORK_API RequestStateChange_OUTPUT : public CimParam
  		{
  		public:
  			// Class Constructor
  			RequestStateChange_OUTPUT() : CimParam() {}
  
  			// Class Destructor
  			~RequestStateChange_OUTPUT(){}
  
  			// class fields
  			// May contain a reference to the ConcreteJob created to track the state transition initiated by the method invocation.
  			const CimReference Job() const;
  			bool JobExists() const;
  		private:
  		};
  
  		// Requests that the state of the element be changed to the value specified in the RequestedState parameter. When the requested state change takes place, the EnabledState and RequestedState of the element will be the same. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten or lost. 
  		// A return code of 0 shall indicate the state change was successfully initiated. 
  		// A return code of 3 shall indicate that the state transition cannot complete within the interval specified by the TimeoutPeriod parameter. 
  		// A return code of 4096 (0x1000) shall indicate the state change was successfully initiated, a ConcreteJob has been created, and its reference returned in the output parameter Job. Any other return code indicates an error condition.
  		virtual unsigned int RequestStateChange(const RequestStateChange_INPUT &input, RequestStateChange_OUTPUT &output);
  
  		 // Function used by the factory
  		static CimBase *CreateFromCimObject(const CimObject &object);
  
  		static vector<shared_ptr<CIM_RecordLog> > Enumerate(ICimWsmanClient *client, const CimKeys &keys = CimKeys()) ;
  
  		// Overloaded delete which supplies the internal resourceURI
  		static void Delete(ICimWsmanClient *client, const CimKeys &keys = CimKeys()) ;
  
  		using CimBase::Delete;
  
  	protected:
  		 // Protected constructor to be used by derived classes
  		CIM_RecordLog(ICimWsmanClient *client, const string &class_name,
  			const string &class_ns, const string &prefix, const string &uri): CIM_Log(client, class_name, class_ns, prefix, uri)
  		{
  			if(_classMetaData.size() == 0)
  			{
  				CIM_Log::SetMetaData(_classMetaData);
  				CimBase::SetMetaData(_classMetaData, _metadata, 1);
  			}
  		}
  		 // Protected constructor which receives CimObject
  		CIM_RecordLog(const CimObject &object)
  			: CIM_Log(object)
  		{
  			if(_classMetaData.size() == 0)
  			{
  				CIM_Log::SetMetaData(_classMetaData);
  				CimBase::SetMetaData(_classMetaData, _metadata, 1);
  			}
  		}
  		// Called by derived classes
  		void SetMetaData(vector<CimFieldAttribute>& childMetaData)
  		{
  			CIM_Log::SetMetaData(childMetaData);
  			CimBase::SetMetaData(childMetaData, _metadata, 1);
  		}
  		const vector<CimFieldAttribute> &GetMetaData() const;
  	private:
  		static const CimFieldAttribute _metadata[];
  		static const string CLASS_NAME;
  		static const string CLASS_URI;
  		static const string CLASS_NS;
  		static const string CLASS_NS_PREFIX;
  		static vector<CimFieldAttribute> _classMetaData;
  	};
  
  } // close namespace Typed
  } // close namespace Cim
  } // close namespace Manageability
  } // close namespace Intel
  #endif // CIM_RECORDLOG_H
  