Net::LDAP::Control::SyncDone - LDAPv3 Sync Done control object


perl-ldap documentation Contained in the perl-ldap distribution.

Index


Code Index:

NAME

Top

Net::LDAP::Control::SyncDone - LDAPv3 Sync Done control object

SYNOPSIS

Top

See Net::LDAP::Control::SyncRequest

DESCRIPTION

Top

Net::LDAP::Control::SyncDone provides an interface for the creation and manipulation of objects that represent the Sync Request Control as described by RFC 4533.

CONSTRUCTOR ARGUMENTS

Top

In addition to the constructor arguments described in Net::LDAP::Control the following are provided.

refreshDeletes

METHODS

Top

As with Net::LDAP::Control each constructor argument described above is also avaliable as a method on the object which will return the current value for the attribute if called without an argument, and set a new value for the attribute if called with an argument.

SEE ALSO

Top

Net::LDAP, Net::LDAP::Control, Net::LDAP::Control::SyncRequest, Net::LDAP::Control::SyncState, http://www.ietf.org/rfc/rfc4533.txt

AUTHOR

Top

Mathieu Parent <math.parent@gmail.com>

Please report any bugs, or post any suggestions, to the perl-ldap mailing list <perl-ldap@perl.org>

COPYRIGHT

Top


perl-ldap documentation Contained in the perl-ldap distribution.

# Copyright (c) 2008 Mathieu Parent <math.parent@gmail.com>. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.

package Net::LDAP::Control::SyncDone;

use vars qw(@ISA $VERSION);
use Net::LDAP::Control;

@ISA = qw(Net::LDAP::Control);
$VERSION = "0.02";

use Net::LDAP::ASN qw(syncDoneValue);
use strict;

sub init {
  my($self) = @_;

  if (exists $self->{value}) {
    $self->{asn} = $syncDoneValue->decode(delete $self->{value});
  } else {
    $self->{asn} = {
      cookie => defined($self->{cookie}) ? $self->{cookie} : '',
      refreshDeletes   => $self->{refreshDeletes} || '0',
    };
  }

  $self;
}

sub cookie {
  my $self = shift;
  $self->{asn} ||= $syncDoneValue->decode($self->{value});
  if (@_) {
    delete $self->{value};
    return $self->{asn}{cookie} = defined($_[0]) ? $_[0] : '';
  }
  $self->{asn}{cookie};
}

sub refreshDeletes {
  my $self = shift;
  $self->{asn} ||= $syncDoneValue->decode($self->{value});
  if (@_) {
    delete $self->{value};
    return $self->{asn}{refreshDeletes} = shift || 0;
  }
  $self->{asn}{refreshDeletes};
}

sub value {
  my $self = shift;

  exists $self->{value}
    ? $self->{value}
    : $self->{value} = $syncDoneValue->encode($self->{asn});
}

1;


__END__