NetSDS
view release on metacpan or search on metacpan
lib/NetSDS/EDR.pm view on Meta::CPAN
use strict;
use warnings;
use JSON;
use NetSDS::Util::DateTime;
use base 'NetSDS::Class::Abstract';
use version; our $VERSION = '1.301';
#===============================================================================
#
=head1 CLASS API
=over
=item B<new(%params)> - class constructor
Parameters:
* filename - EDR file name
Example:
my $edr = NetSDS::EDR->new(
filename => '/mnt/stat/ivr.dat',
);
=cut
#-----------------------------------------------------------------------
sub new {
my ( $class, %params ) = @_;
my $self = $class->SUPER::new(%params);
# Create JSON encoder for EDR data processing
$self->{encoder} = JSON->new();
# Initialize file to write
if ( $params{filename} ) {
$self->{edr_file} = $params{filename};
} else {
return $class->error("Absent mandatory parameter 'filename'");
}
return $self;
}
#***********************************************************************
=item B<write($rec1 [,$rec2 [...,$recN]])> - write EDR to file
This methods converts records to JSON and write to file.
Each record writing to one separate string.
Example:
$edr->write({from => '380441234567', to => '5552222', status => 'busy'});
=cut
#-----------------------------------------------------------------------
sub write {
my ( $self, @records ) = @_;
open EDRF, ">>$self->{edr_file}";
# Write records - one record per line
foreach my $rec (@records) {
my $edr_json = $self->{encoder}->encode($rec);
print EDRF "$edr_json\n";
}
close EDRF;
}
1;
__END__
=back
=head1 EXAMPLES
See C<samples> directory.
=head1 TODO
* Handle I/O errors when write EDR data.
=head1 AUTHOR
Michael Bochkaryov <misha@rattler.kiev.ua>
=head1 LICENSE
Copyright (C) 2008-2009 Net Style Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
=cut
( run in 0.861 second using v1.01-cache-2.11-cpan-39bf76dae61 )