/[cwmp]/google/lib/CWMP/Response.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /google/lib/CWMP/Response.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 50 - (show annotations)
Tue Jun 19 21:29:04 2007 UTC (16 years, 11 months ago) by dpavlin
File size: 1799 byte(s)
* added queue to send commands to CPE
* implemented parsing of Fault messages from CPE
* correctly emit NoMoreRequests in SOAP header
* close connection (not verified against TR-069 standard yet)
1 package CWMP::Response;
2
3 use strict;
4 use warnings;
5
6 use base qw/Class::Accessor/;
7 __PACKAGE__->add_accessor( qw/
8 debug
9 /);
10
11 use XML::Generator;
12 use Carp qw/confess/;
13 use Data::Dump qw/dump/;
14
15 =head1 NAME
16
17 CWMP::Response - generate SOAP meesage for response
18
19 =head2 METHODS
20
21 =head2 new
22
23 my $response = CWMP::Response->new({ debug => 1 });
24
25 =cut
26
27 sub new {
28 my $class = shift;
29 my $self = $class->SUPER::new( @_ );
30
31 warn "created XML::Generator object" if $self->debug;
32
33 return $self;
34 }
35
36
37 my $cwmp = [ cwmp => 'urn:dslforum-org:cwmp-1-0' ];
38 my $soap = [ soap => "http://schemas.xmlsoap.org/soap/envelope/" ];
39
40 =head2 Inform
41
42 $response->Inform( $state );
43
44 =cut
45
46 sub Inform {
47 my ( $self, $state ) = @_;
48 $self->xml( $state, sub {
49 my ( $X, $state ) = @_;
50 $X->InformResponse( $cwmp,
51 $X->MaxEnvelopes( $cwmp, 1 )
52 );
53 });
54 }
55
56 =head2 GetRPCMethods
57
58 $response->GetRPCMethods( $state );
59
60 =cut
61
62 sub GetRPCMethods {
63 my ( $self, $state ) = @_;
64 $self->xml( $state, sub {
65 my ( $X, $state ) = @_;
66 $X->GetRPCMethods();
67 });
68 };
69
70 =head2 xml
71
72 Used to implement methods which modify just body of soap message.
73 For examples, see source of this module.
74
75 =cut
76
77 sub xml {
78 my $self = shift;
79
80 my ( $state, $closure ) = @_;
81
82 confess "no state?" unless ($state);
83 confess "no body closure" unless ( $closure );
84
85 confess "no ID in state ", dump( $state ) unless ( $state->{ID} );
86
87 warn "state used to generate xml = " . dump( $state ) if $self->debug;
88
89 my $X = XML::Generator->new(':pretty');
90
91 return $X->Envelope( $soap, { 'soap:encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/" },
92 $X->Header( $soap,
93 $X->ID( $cwmp, { mustUnderstand => 1 }, $state->{ID} ),
94 $X->NoMoreRequests( $cwmp, $state->{NoMoreRequests} || 0 ),
95 ),
96 $X->Body( $soap, $closure->( $X, $state ) ),
97 );
98 }
99
100 1;

  ViewVC Help
Powered by ViewVC 1.1.26