1 # 2 # Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. 3 # 4 5 # 6 # Sun::Solaris::Exacct::Object documentation. 7 # 8 9 =head1 NAME 10 11 Sun::Solaris::Exacct::Object - exacct object manipulation 12 13 =head1 SYNOPSIS 14 15 use Sun::Solaris::Exacct::Object qw(:ALL); 16 print($ea_obj->value(), "\n"); 17 18 This module is used as a parent of the two possible types of Perl exacct 19 objects: Items and Groups. An Item is either a single data value such as the 20 number of seconds of user CPU time consumed by a process, an embedded Perl 21 exacct object, or a block of raw data. A Group is an ordered collection of 22 Perl exacct Items such as all of the resource usage values for a particular 23 process or task. If Groups need to be nested within each other, the inner 24 Groups can be stored as embedded Perl exacct objects inside the enclosing 25 Group. 26 27 This module contains methods that are common to both Perl exacct Items and 28 Groups. The attributes of C<Sun::Solaris::Exacct::Object> and all classes 29 derived from it are read-only after initial creation with new(). This behavior 30 prevents the inadvertent modification of the attributes that could produce 31 inconsistent catalog tags and data values. The only exception is the array 32 used to store the Items inside a Group object, which can be modified using the 33 normal Perl array operators. See the C<value()> method below. 34 35 =head2 Constants 36 37 C<EO_ERROR>, C<EO_NONE>, C<EO_ITEM>, and C<EO_GROUP>. 38 39 =head2 Functions 40 41 None. 42 43 =head2 Class methods 44 45 B<C<dump($object, $filehandle)>> 46 47 This method dumps formatted text representation of a Perl exacct object to the 48 supplied file handle. If no file handle is specified, the text representation 49 is dumped to C<STDOUT>. See EXAMPLES below for sample output. 50 51 =head2 Object methods 52 53 B<C<type()>> 54 55 This method returns the type field of the Perl exacct object. The value of the 56 type field is returned as a dual-typed scalar and is either C<EO_ITEM>, 57 C<EO_GROUP>, or C<EO_NONE>. 58 59 B<C<catalog()>> 60 61 This method returns the catalog field of the Perl exacct object. The value is 62 returned as a C<Sun::Solaris::Exacct::Catalog> object. 63 64 B<C<match_catalog($catalog)>> 65 66 This method matches the passed catalog tag against the object. C<true> is 67 returned of a match occurs. Otherwise C<false> is returned. This method has 68 the same behavior as the underlying C<ea_match_object_catalog(3EXACCT)> 69 function. 70 71 B<C<value()>> 72 73 This method returns the value of the Perl exacct object. In the case of an 74 Item, this object will normally be a Perl scalar, either a number or string. 75 For raw Items, the buffer contained inside the object is returned as a Perl 76 string that can be manipulated with the Perl C<unpack()> function. If the Item 77 contains either a nested Item or a nested Group, the enclosed Item is returned 78 as a reference to an object of the appropriate subtype of the 79 C<Sun::Solaris::Exacct::Object> class. 80 81 For Group objects, if C<value()> is called in a scalar context, the return 82 value is a reference to the underlying array used to store the component Items 83 of the Group. Since this array can be manipulated with the normal Perl array 84 indexing syntax and array operators, the objects inside the Group can be 85 manipulated. All objects in the array must be derived from the 86 C<Sun::Solaris::Exacct::Object> class. Any attempt to insert something else 87 into the array will generate a fatal runtime error that can be caught with an 88 C<eval { }> block. 89 90 If C<value()> is called in a list context for a Group object, it returns a 91 list of all the objects in the Group. Unlike the array reference returned in a 92 scalar context, this list cannot be manipulated to add or delete Items from a 93 Group. This mechanism is considerably faster than the array mechanism 94 described above and is the preferred mechanism if a Group is being examined in 95 a read-only manner. 96 97 =head2 Exports 98 99 By default nothing is exported from this module. The following tags can be 100 used to selectively import constants and functions defined in this module: 101 102 :CONSTANTS EO_ERROR, EO_NONE, EO_ITEM, and EO_GROUP 103 104 :ALL :CONSTANTS 105 106 =head1 EXAMPLES 107 108 The following is an example of output of the C<dump()> method for a Perl exacct 109 Group object. 110 111 GROUP 112 Catalog = EXT_GROUP|EXC_DEFAULT|EXD_GROUP_PROC_PARTIAL 113 ITEM 114 Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PID 115 Value = 3 116 ITEM 117 Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_UID 118 Value = 0 119 ITEM 120 Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_GID 121 Value = 0 122 ITEM 123 Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PROJID 124 Value = 0 125 ITEM 126 Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_TASKID 127 Value = 0 128 ITEM 129 Catalog = EXT_STRING|EXC_DEFAULT|EXD_PROC_COMMAND 130 Value = fsflush 131 ENDGROUP 132 133 =head1 ATTRIBUTES 134 135 See C<attributes(5)> for descriptions of the following attributes: 136 137 ___________________________________________________________ 138 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 139 |_____________________________|_____________________________| 140 | Availability | CPAN (http://www.cpan.org) | 141 |_____________________________|_____________________________| 142 | Interface Stability | Evolving | 143 |_____________________________|_____________________________| 144 145 =head1 SEE ALSO 146 147 C<ea_match_object_catalog(3EXACCT)>, C<Sun::Solaris::Exacct(3)>, 148 C<Sun::Solaris::Exacct::Catalog(3)>, C<Sun::Solaris::Exacct::File(3)>, 149 C<Sun::Solaris::Exacct::Object::Group(3)>, 150 C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>