// Copyright (c) 2008 DMTF.  All rights reserved.
   [Version ( "2.19.0" ), 
    UMLPackagePath ( "CIM::Interop" ), 
    Description ( 
       "CIM_CIMOMStatisticalData provides statistical data about the "
       "performance of the CIM Object Manager. Each object of this "
       "class provides elapsed time and size data for a particular "
       "type of CIM operation. All operations of that type, regardless "
       "of the CIM operations protocol being used, are accumulated in "
       "one object and covers the CIM operations issued by all clients "
       "of the Object Manager scoping the instance. Batched CIM "
       "operations are accumulated into a separate operation type for "
       "\"Batched\". The counters in this class SHOULD be implemented "
       "such that they always increment and naturally wrap around when "
       "their numerical limit is exceeded. A client that calculates "
       "the difference of two snapshots of a counter at the beginning "
       "and end of a measurement interval should get the correct "
       "result, even if there was a wrap-around in between obtaining "
       "the two snapshots. (Two or more wrap arounds will result in "
       "wrong data being calculated.) The gathering of the data can be "
       "controlled through the property, "
       "CIM_ObjectManager.GatherStatisticalData. The time interval to "
       "which the statistical data applies, ends at the current time "
       "and therefore includes the most current CIM operations. The "
       "interval starts when the statistical data gathering was last "
       "turned on for the Object Manager." )]
class CIM_CIMOMStatisticalData : CIM_StatisticalData {

      [Override ( "InstanceID" ), 
       Description ( 
          "The InstanceID property opaquely identifies a unique "
          "instance of CIMOMStatisticalData and MUST be unique "
          "within a namespace. In order to ensure uniqueness, the "
          "value of InstanceID MUST be constructed in the following "
          "manner: \n"
          "CIM<ID> \n"
          "The <ID> MUST include a CIM Object Manager specified "
          "unique identifier." )]
   string InstanceID;

      [Required, Description ( 
          "The OperationType property identifies the type of CIM "
          "operation for which data is reported in this instance. "
          "Batched CIM operations (consisting of multiple simple "
          "CIM operations) are reported against the \"Batched\" "
          "type only." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "19", "20", "21", "22", "23", "24", "25", "26" }, 
       Values { "Unknown", "Other", "Batched", "GetClass", 
          "GetInstance", "DeleteClass", "DeleteInstance", 
          "CreateClass", "CreateInstance", "ModifyClass", 
          // 10              
          "ModifyInstance", 
          "EnumerateClasses", "EnumerateClassNames", 
          "EnumerateInstances", "EnumerateInstanceNames", 
          "ExecQuery", "Associators", "AssociatorNames", 
          "References", "ReferenceNames", 
          // 20              
          "GetProperty", 
          "SetProperty", "GetQualifier", "SetQualifier", 
          "DeleteQualifier", "EnumerateQualifiers", 
          "IndicationDelivery" }, 
       ModelCorrespondence { 
          "CIM_CIMOMStatisticalData.OtherOperationType" }]
   uint16 OperationType;

      [Description ( 
          "The OtherOperationType property identifies the operation "
          "if the OperationType property has a value of 1 "
          "(\"Other\"). For all other values of OperationType, the "
          "property is NULL." ), 
       MaxLen ( 64 ), 
       ModelCorrespondence { "CIM_CIMOMStatisticalData.OperationType" }]
   string OtherOperationType;

      [Required, Description ( 
          "The NumberOfOperations property contains the number of "
          "CIM operations of the specified type. This property can "
          "be used to calculate average values per CIM operation." ), 
       Counter]
   uint64 NumberOfOperations;

      [Required, Description ( 
          "The CimomElapsedTime property contains the elapsed time "
          "spent in the CIM Object Manager for this operation type, "
          "not counting the elapsed time spent in providers and the "
          "underlying instrumentation. The measurement points for "
          "this property SHOULD be at the transport layer interface "
          "on the network side, and at the provider interface on "
          "the instrumentation side of the CIM Object Manager." )]
   datetime CimomElapsedTime;

      [Required, Description ( 
          "The ProviderElapsedTime property contains the elapsed "
          "time spent in all providers involved with this operation "
          "type, including the underlying instrumentation. The "
          "measurement point for this property SHOULD be from the "
          "provider interface of the CIM Object Manager." )]
   datetime ProviderElapsedTime;

      [Description ( 
          "The RequestSize property contains the size of the "
          "operation requests sent to the CIM Object Manager. Any "
          "overhead of protocols above the transport protocol "
          "SHOULD be included in the count. For example, for the "
          "HTTP protocol, the size would include the size of the "
          "HTTP payload and the size of the HTTP headers." ), 
       Units ( "Bytes" ), 
       Counter, PUnit ( "byte" )]
   uint64 RequestSize;

      [Description ( 
          "The ResponseSize property contains the size of the "
          "operation responses sent back from the CIM Object "
          "Manager. Any overhead of protocols above the transport "
          "protocol SHOULD be included in the count. For example, "
          "for the HTTP protocol, the size would include the size "
          "of the HTTP payload and the size of the HTTP headers." ), 
       Units ( "Bytes" ), 
       Counter, PUnit ( "byte" )]
   uint64 ResponseSize;


};
