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 )