diff options
Diffstat (limited to 'contrib/DNS-LDNS/lib/DNS/LDNS/KeyList.pm')
-rw-r--r-- | contrib/DNS-LDNS/lib/DNS/LDNS/KeyList.pm | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/DNS-LDNS/lib/DNS/LDNS/KeyList.pm b/contrib/DNS-LDNS/lib/DNS/LDNS/KeyList.pm new file mode 100644 index 0000000..678225f --- /dev/null +++ b/contrib/DNS-LDNS/lib/DNS/LDNS/KeyList.pm @@ -0,0 +1,72 @@ +package DNS::LDNS::KeyList; + +use 5.008008; +use strict; +use warnings; + +use DNS::LDNS ':all'; + +our $VERSION = '0.52'; + +sub new { + my $class = shift; + + return _new(); +} + +sub push { + my ($self, @keys) = @_; + + for my $k (@keys) { + if (DNS::LDNS::GC::is_owned($k)) { + die "Cannot push a key on multiple lists."; + } + $self->_push($k); + DNS::LDNS::GC::own($k, $self); + } +} + +sub key { + my ($self, $index) = @_; + return DNS::LDNS::GC::own($self->_key($index), $self); +} + +sub DESTROY { + DNS::LDNS::GC::free($_[0]); +} + +1; +__END__ + +=head1 NAME + +DNS::LDNS::KeyList - Linked list of dnssec keys + +=head1 SYNOPSIS + + use DNS::LDNS ':all' + + my l = new DNS::LDNS::KeyList + l->set_use(bool) + l->push(@keys) + key = l->pop + c = l->count + key = l->key(index) + +=head1 SEE ALSO + +http://www.nlnetlabs.nl/projects/ldns + +=head1 AUTHOR + +Erik Pihl Ostlyngen, E<lt>erik.ostlyngen@uninett.noE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2013 by UNINETT Norid AS + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself, either Perl version 5.14.2 or, +at your option, any later version of Perl 5 you may have available. + +=cut |