From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

=head1 NAME
MR::IProto::Response - response message
=head1 DESCRIPTION
Base class for all response messages.
=cut
use Mouse;
=head1 PUBLIC ATTRIBUTES
=over
=item request
Instance of L<MR::IProto::Request>.
=cut
has request => (
is => 'ro',
isa => 'MR::IProto::Request',
required => 1,
);
=back
=head1 PUBLIC METHODS
=over
=item retry
Is request retry must be done.
=cut
sub retry {
return 0;
}
=back
=head1 PROTECTED METHODS
=over
=item BUILDARGS( %args | \%args | $data )
If C<$data> is passed as argument then it unpacked and object is
created based on information contained in it.
See L<Mouse::Manual::Construction/BUILDARGS> for more information.
=cut
around BUILDARGS => sub {
my ($orig, $class, %args) = @_;
if( exists $args{data} ) {
my $parsed_args = $class->_parse_data($args{data});
my $tail = delete $parsed_args->{data};
warn "Not all data was parsed" if defined $tail && length $tail;
return $class->$orig(%$parsed_args, %args);
}
else {
return $class->$orig(%args);
}
};
=item _parse_data( $data )
You B<must> implement this method in you subclass to unpack your object.
Returns hashref of attributes which will be passed to constructor.
=cut
sub _parse_data {
return { data => $_[1] };
}
=back
=cut
no Mouse;
__PACKAGE__->meta->make_immutable();
1;