DIME-Tools
view release on metacpan or search on metacpan
lib/DIME/Payload.pm view on Meta::CPAN
sub tnf
{
my $self = shift;
my $param = shift;
if(defined($param))
{
$self->{_TNF} = $param;
}
else
{
return $self->{_TNF};
}
}
sub id
{
my $self = shift;
my $param = shift;
if(defined($param))
{
$self->{_ID} = $param;
}
else
{
return $self->{_ID};
}
}
# Add a Record to a Payload
sub add_record
{
my $self = shift;
my $record = shift;
push(@{$self->{_RECORDS}},$record);
}
sub attach
{
my $self = shift;
my %params = @_;
my $data;
$self->{_CHUNK_SIZE} = $params{Chunked} if(defined($params{Chunked}));
if(defined($params{Path}))
{
my $file = IO::File->new($params{Path},"r");
if($file)
{
# The user wants to load all the file in memory now...
if(!defined($params{Dynamic}))
{
# Load the attachment from a file
my $buf;
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = $file->stat();
$file->read($buf,$size);
$file->close();
$data = \$buf;
}
else
{
# Assign the opened stream to the member variable
$self->{_STREAM} = $file;
}
}
}
if(defined($params{Data}))
{
# Get the attachment directly from memory
$data = $params{Data};
}
$self->set_mime_type($params{MIMEType}) if (defined($params{MIMEType}));
$self->set_uri_type($params{URIType}) if (defined($params{URIType}));
# If the data is data already loaded in memory...
if(defined($data))
{
if(defined($params{Chunked}))
{
my $data_stream = IO::Scalar->new($data);
my $record;
for(my $i=0;$record = $self->create_chunk_record($data_stream);$i++)
{
$self->add_record($record);
}
$data_stream->close();
}
else
{
# The attachment goes in one record
my $record = DIME::Record->new($self);
my $data_io = IO::Scalar->new(\$data);
$record->data($data_io);
$self->add_record($record);
}
}
}
sub print
{
my $self = shift;
my $out = shift;
if(defined($self->{_STREAM}))
{
if($self->{_CHUNK_SIZE})
{
my $i=0;
while(my $record = $self->create_chunk_record($self->{_STREAM}))
{
$record->mb(1) if($self->mb() and $i==0);
( run in 2.575 seconds using v1.01-cache-2.11-cpan-5735350b133 )