Provided by: libnet-dbus-perl_1.0.0-2build1_amd64
NAME
Net::DBus::Binding::Iterator - Reading and writing message parameters
SYNOPSIS
Creating a new message my $msg = new Net::DBus::Binding::Message::Signal; my $iterator = $msg->iterator; $iterator->append_boolean(1); $iterator->append_byte(123); Reading from a mesage my $msg = ...get it from somewhere... my $iter = $msg->iterator(); my $i = 0; while ($iter->has_next()) { $iter->next(); $i++; if ($i == 1) { my $val = $iter->get_boolean(); } elsif ($i == 2) { my $val = $iter->get_byte(); } }
DESCRIPTION
Provides an iterator for reading or writing message fields. This module provides a Perl API to access the dbus_message_iter_XXX methods in the C API. The array and dictionary types are not yet supported, and there are bugs in the Quad support (ie it always returns -1!).
METHODS
$res = $iter->has_next() Determines if there are any more fields in the message itertor to be read. Returns a positive value if there are more fields, zero otherwise. $success = $iter->next() Skips the iterator onto the next field in the message. Returns a positive value if the current field pointer was successfully advanced, zero otherwise. my $val = $iter->get_boolean() $iter->append_boolean($val); Read or write a boolean value from/to the message iterator my $val = $iter->get_byte() $iter->append_byte($val); Read or write a single byte value from/to the message iterator. my $val = $iter->get_string() $iter->append_string($val); Read or write a UTF-8 string value from/to the message iterator my $val = $iter->get_object_path() $iter->append_object_path($val); Read or write a UTF-8 string value, whose contents is a valid object path, from/to the message iterator my $val = $iter->get_signature() $iter->append_signature($val); Read or write a UTF-8 string, whose contents is a valid type signature, value from/to the message iterator my $val = $iter->get_int16() $iter->append_int16($val); Read or write a signed 16 bit value from/to the message iterator my $val = $iter->get_uint16() $iter->append_uint16($val); Read or write an unsigned 16 bit value from/to the message iterator my $val = $iter->get_int32() $iter->append_int32($val); Read or write a signed 32 bit value from/to the message iterator my $val = $iter->get_uint32() $iter->append_uint32($val); Read or write an unsigned 32 bit value from/to the message iterator my $val = $iter->get_int64() $iter->append_int64($val); Read or write a signed 64 bit value from/to the message iterator. An error will be raised if this build of Perl does not support 64 bit integers my $val = $iter->get_uint64() $iter->append_uint64($val); Read or write an unsigned 64 bit value from/to the message iterator. An error will be raised if this build of Perl does not support 64 bit integers my $val = $iter->get_double() $iter->append_double($val); Read or write a double precision floating point value from/to the message iterator my $value = $iter->get() my $value = $iter->get($type); Get the current value pointed to by this iterator. If the optional $type parameter is supplied, the wire type will be compared with the desired type & a warning output if their differ. The $type value must be one of the "Net::DBus::Binding::Message::TYPE*" constants. my $hashref = $iter->get_dict() If the iterator currently points to a dictionary value, unmarshalls and returns the value as a hash reference. my $hashref = $iter->get_array() If the iterator currently points to an array value, unmarshalls and returns the value as a array reference. my $hashref = $iter->get_variant() If the iterator currently points to a variant value, unmarshalls and returns the value contained in the variant. my $hashref = $iter->get_struct() If the iterator currently points to an struct value, unmarshalls and returns the value as a array reference. The values in the array correspond to members of the struct. $iter->append($value) $iter->append($value, $type) Appends a value to the message associated with this iterator. The value is marshalled into wire format, according to the following rules. If the $value is an instance of Net::DBus::Binding::Value, the embedded data type is used. If the $type parameter is supplied, that is taken to represent the data type. The type must be one of the "Net::DBus::Binding::Message::TYPE_*" constants. Otherwise, the data type is chosen to be a string, dict or array according to the perl data types SCALAR, HASH or ARRAY. my $type = $iter->guess_type($value) Make a best guess at the on the wire data type to use for marshalling $value. If the value is a hash reference, the dictionary type is returned; if the value is an array reference the array type is returned; otherwise the string type is returned. my $sig = $iter->format_signature($type) Given a data type representation, construct a corresponding signature string $iter->append_array($value, $type) Append an array of values to the message. The $value parameter must be an array reference, whose elements all have the same data type specified by the $type parameter. $iter->append_struct($value, $type) Append a struct to the message. The $value parameter must be an array reference, whose elements correspond to members of the structure. The $type parameter encodes the type of each member of the struct. $iter->append_dict($value, $type) Append a dictionary to the message. The $value parameter must be an hash reference.The $type parameter encodes the type of the key and value of the hash. $iter->append_variant($value) Append a value to the message, encoded as a variant type. The $value can be of any type, however, the variant will be encoded as either a string, dictionary or array according to the rules of the "guess_type" method. my $type = $iter->get_arg_type Retrieves the type code of the value pointing to by this iterator. The returned code will correspond to one of the constants "Net::DBus::Binding::Message::TYPE_*" my $type = $iter->get_element_type If the iterator points to an array, retrieves the type code of array elements. The returned code will correspond to one of the constants "Net::DBus::Binding::Message::TYPE_*"
AUTHOR
Daniel P. Berrange
COPYRIGHT
Copyright (C) 2004-2011 Daniel P. Berrange
SEE ALSO
Net::DBus::Binding::Message