File: Cancel.pm

package info (click to toggle)
libnet-ldap-perl 1%3A0.4400-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,484 kB
  • sloc: perl: 13,645; sh: 16; makefile: 2
file content (117 lines) | stat: -rw-r--r-- 2,625 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

package Net::LDAP::Extension::Cancel;

require Net::LDAP::Extension;

$VERSION = "0.01";
@ISA = qw(Net::LDAP::Extension);

use Convert::ASN1;

my $cancelReq = Convert::ASN1->new;
$cancelReq->prepare(q<SEQUENCE {
                     cancelID    INTEGER	-- originally: MessageID
                    }>);

sub Net::LDAP::cancel {
  my $ldap = shift;
  my $op = shift;
  my %opt = @_;

  my $res = $ldap->extension (
    name => '1.3.6.1.1.8',
    value => $cancelReq->encode({ cancelID => ref($op) ? $op->mesg_id : $op }),
    ($opt{control} ? (control => $opt{control}) : ())
  );

  bless $res;
}

1;

__END__

=head1 NAME

Net::LDAP::Extension::Cancel - LDAP Cancel Operation

=head1 SYNOPSIS

 use Net::LDAP;
 use Net::LDAP::Constant qw(LDAP_SUCCESS LDAP_CANCELED)
 use Net::LDAP::Extension::Cancel;

 $ldap = Net::LDAP->new( 'ldap.mydomain.eg' );

 $ldap->bind('cn=Joe User,cn=People,dc=example,dc=com',
             password => 'secret');

 $search = $ldap->search( 
                        base     => 'c=US',
                        filter   => '(&(sn=Barr) (o=Texas Instruments))',
                        callback => \&process_entry, # Call this sub for each entry
                      );

 $mesg = $ldap->cancel($search);

 die "error :", $mesg->code(), ": ", $mesg->error()
   if ($mesg->code() != LDAP_CANCELED && mesg->code() != LDAP_SUCCESS);

=head1 DESCRIPTION

C<Net::LDAP::Extension::Cancel> implements the C<Cancel>
extended LDAPv3 operation as described in RFC 3909.

The C<Cancel> extended operation is very similar to the C<Abandon>
standard operation, and has the same call signature.
Unlike the C<Abandon> operation, it has a response which provides
an indication of its outcome.

It implements no object by itself but extends the L<Net::LDAP> object 
by another method:

=head1 METHODS

=over 4

=item cancel ( OPERATION, OPTIONS )

Cancel an outstanding operation. C<OPERATION> may be a number or an
object which is a sub-class of L<Net::LDAP::Message>, returned from a
previous method call.

OPTIONS is a list of key/value pairs. The following keys are reconized:

=over 4

=item control => CONTROL

=item control => [ CONTROL, .. ]

Control(s) to be passed to the operation.

=back


=back

=head1 SEE ALSO

L<Net::LDAP>,
L<Net::LDAP::Extension>

=head1 AUTHOR

Peter Marschall <peter@adpm.de>.

Please report any bugs, or post any suggestions, to the perl-ldap
mailing list E<lt>perl-ldap@perl.orgE<gt>

=head1 COPYRIGHT

Copyright (c) 2011 Peter Marschall. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.

=cut