# Copyrights 2001-2014 by [Mark Overmeer].
# For other contributors see ChangeLog.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.01.
use strict;
use warnings;
package Mail::Message::Body::Delayed;
use vars '$VERSION';
$VERSION = '2.117';
use base 'Mail::Reporter';
use Object::Realize::Later
becomes => 'Mail::Message::Body',
realize => 'load',
warn_realization => 0,
believe_caller => 1;
use Carp;
use Scalar::Util 'weaken';
use overload '""' => 'string_unless_carp'
, bool => sub {1}
, '@{}' => sub {shift->load->lines};
#------------------------------------------
sub init($)
{ my ($self, $args) = @_;
$self->SUPER::init($args);
$self->{MMB_seqnr} = -1; # for overloaded body comparison
$self->{MMBD_message} = $args->{message}
or $self->log(INTERNAL => "A message must be specified to a delayed body.");
weaken($self->{MMBD_message});
$self;
}
#------------------------------------------
sub message() { shift->{MMBD_message} }
#------------------------------------------
sub modified(;$)
{ return 0 if @_==1 || !$_[1];
shift->forceRealize(shift);
}
#------------------------------------------
sub isModified() { 0 }
#------------------------------------------
sub isDelayed() {1}
#------------------------------------------
sub isMultipart() {shift->message->head->isMultipart}
#------------------------------------------
sub guessSize() {shift->{MMBD_size}}
#------------------------------------------
sub nrLines()
{ my ($self) = @_;
defined $self->{MMBD_lines}
? $self->{MMBD_lines}
: $_[0]->forceRealize->nrLines;
}
#------------------------------------------
sub string_unless_carp()
{ my $self = shift;
return $self->load->string unless (caller)[0] eq 'Carp';
(my $class = ref $self) =~ s/^Mail::Message/MM/g;
"$class object";
}
#------------------------------------------
sub read($$;$@)
{ my ($self, $parser, $head, $bodytype) = splice @_, 0, 4;
$self->{MMBD_parser} = $parser;
@$self{ qw/MMBD_begin MMBD_end MMBD_size MMBD_lines/ }
= $parser->bodyDelayed(@_);
$self;
}
#------------------------------------------
sub fileLocation(;@) {
my $self = shift;
return @$self{ qw/MMBD_begin MMBD_end/ } unless @_;
@$self{ qw/MMBD_begin MMBD_end/ } = @_;
}
#------------------------------------------
sub moveLocation($)
{ my ($self, $dist) = @_;
$self->{MMBD_begin} -= $dist;
$self->{MMBD_end} -= $dist;
$self;
}
#------------------------------------------
sub load() {$_[0] = $_[0]->message->loadBody}
#------------------------------------------
1;