| Net-AMQP documentation | Contained in the Net-AMQP distribution. |
Net::AMQP::Protocol::Base - Base class of auto-generated protocol classes
See Net::AMQP::Protocol::load_xml_spec() for how subclasses to this class are auto-generated.
In the case of a content <class> (such as Basic, File or Stream), method_id is 0 for the virtual ContentHeader method. This allows you to create a Header frame in much the same way you create a Method frame, but with the virtual method 'ContentHeader'. For example:
my $header_frame = Net::AMQP::Protocol::Basic::ContentHeader->new(
content_type => 'text/html'
);
print $header_frame->method_id(); # prints '0'
Contains an ordered arrayref of the fields that comprise a frame for this method. For example:
Net::AMQP::Protocol::Channel::Open->frame_arguments([
out_of_band => 'short_string'
]);
This is used by the Net::AMQP::Frame subclasses to (de)serialize raw binary data. Each of these fields are also an accessor for the class objects.
Contains the hashref that the load_xml_spec() call generated for this class.
Same as above, but for this method.
Returns a Net::AMQP::Frame subclass object that wraps the given object, if possible.
Copyright (c) 2009 Eric Waters and XMission LLC (http://www.xmission.com/). All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
Eric Waters <ewaters@gmail.com>
| Net-AMQP documentation | Contained in the Net-AMQP distribution. |
package Net::AMQP::Protocol::Base;
use strict; use warnings; use base qw(Class::Data::Inheritable Class::Accessor); BEGIN { __PACKAGE__->mk_classdata($_) foreach qw( class_id method_id frame_arguments class_spec method_spec ); } our $VERSION = 0.01;
sub new { my ($class, %self) = @_; return bless \%self, $class; } sub register { my $class = shift; # Inform the Frame::Method class of the existance of this method type if ($class->class_id && $class->method_id) { Net::AMQP::Frame::Method->register_method_class($class); } elsif ($class->class_id && ! $class->method_id) { Net::AMQP::Frame::Header->register_header_class($class); } # Create accessor methods in the subclass for frame data my @accessors; my $arguments = $class->frame_arguments; for (my $i = 0; $i <= $#{ $arguments }; $i += 2) { my ($key, $type) = ($arguments->[$i], $arguments->[$i + 1]); push @accessors, $key; } $class->mk_accessors(@accessors); }
sub frame_wrap { my $self = shift; if ($self->class_id && $self->method_id) { return Net::AMQP::Frame::Method->new( method_frame => $self ); } elsif ($self->class_id) { return Net::AMQP::Frame::Header->new( header_frame => $self ); } else { return $self; } }
1;