Net::DBus::Test::MockIterator - Iterator over a mock message
Creating a new message
my $msg = new Net::DBus::Test::MockMessage my $iterator = $msg->iterator; $iterator->append_boolean(1); $iterator->append_byte(123);
Reading from a message
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(); } }
This module provides a mock counterpart to the
Net::DBus::Binding::Iterator object which is capable of iterating over
mock message objects. Instances of this module are not created directly,
instead they are obtained via the iterator
method on the
Net::DBus::Test::MockMessage module.
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.
Skips the iterator onto the next field in the message. Returns a positive value if the current field pointer was successfully advanced, zero otherwise.
Read or write a boolean value from/to the message iterator
Read or write a single byte value from/to the message iterator.
Read or write a UTF-8 string value from/to the message iterator
Read or write a UTF-8 string value, whose contents is a valid object path, from/to the message iterator
Read or write a UTF-8 string, whose contents is a valid type signature, value from/to the message iterator
Read or write a signed 16 bit value from/to the message iterator
Read or write an unsigned 16 bit value from/to the message iterator
Read or write a signed 32 bit value from/to the message iterator
Read or write an unsigned 32 bit value from/to the message iterator
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
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
Read or write a double precision floating point value from/to the message iterator
Read or write a unix_fd value from/to the message iterator
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.
If the iterator currently points to a dictionary value, unmarshalls and returns the value as a hash reference.
If the iterator currently points to an array value, unmarshalls and returns the value as a array reference.
If the iterator currently points to a variant value, unmarshalls and returns the value contained in the variant.
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.
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.
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.
Given a data type representation, construct a corresponding signature string
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.
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.
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.
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.
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_*
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_*
It doesn't completely replicate the API of Net::DBus::Binding::Iterator, merely enough to make the high level bindings work in a test scenario.
Daniel P. Berrange
Copyright (C) 2005-2009 Daniel P. Berrange
Net::DBus::Test::MockMessage, Net::DBus::Binding::Iterator, <http://www.mockobjects.com/Faq.html>