… | |
… | |
45 | |
45 | |
46 | package Net::FCP; |
46 | package Net::FCP; |
47 | |
47 | |
48 | use Carp; |
48 | use Carp; |
49 | |
49 | |
50 | $VERSION = 0.06; |
50 | $VERSION = 0.07; |
51 | |
51 | |
52 | no warnings; |
52 | no warnings; |
53 | |
53 | |
54 | our $EVENT = Net::FCP::Event::Auto::; |
54 | our $EVENT = Net::FCP::Event::Auto::; |
55 | $EVENT = Net::FCP::Event::Event;#d# |
55 | $EVENT = Net::FCP::Event::Event;#d# |
… | |
… | |
125 | my ($k, $v) = ($1, $2); |
125 | my ($k, $v) = ($1, $2); |
126 | my @p = split /\./, tolc $k, 3; |
126 | my @p = split /\./, tolc $k, 3; |
127 | |
127 | |
128 | $hdr->{$p[0]} = $v if @p == 1; # lamest code I ever wrote |
128 | $hdr->{$p[0]} = $v if @p == 1; # lamest code I ever wrote |
129 | $hdr->{$p[0]}{$p[1]} = $v if @p == 2; |
129 | $hdr->{$p[0]}{$p[1]} = $v if @p == 2; |
130 | $hdr->{$p[0]}{$p[1]}{$p[3]} = $v if @p == 3; |
130 | $hdr->{$p[0]}{$p[1]}{$p[2]} = $v if @p == 3; |
131 | die "FATAL: 4+ dot metadata" if @p >= 4; |
131 | die "FATAL: 4+ dot metadata" if @p >= 4; |
132 | } |
132 | } |
133 | |
133 | |
134 | if ($data =~ /\GEndPart\015?\012/gc) { |
134 | if ($data =~ /\GEndPart\015?\012/gc) { |
135 | # nop |
135 | # nop |
… | |
… | |
557 | } |
557 | } |
558 | |
558 | |
559 | # used as a default exception thrower |
559 | # used as a default exception thrower |
560 | sub rcv_throw_exception { |
560 | sub rcv_throw_exception { |
561 | my ($self, $attr, $type) = @_; |
561 | my ($self, $attr, $type) = @_; |
562 | $self->throw (new Net::FCP::Exception $type, $attr); |
562 | $self->throw (Net::FCP::Exception->new ($type, $attr)); |
563 | } |
563 | } |
564 | |
564 | |
565 | *rcv_failed = \&Net::FCP::Txn::rcv_throw_exception; |
565 | *rcv_failed = \&Net::FCP::Txn::rcv_throw_exception; |
566 | *rcv_format_error = \&Net::FCP::Txn::rcv_throw_exception; |
566 | *rcv_format_error = \&Net::FCP::Txn::rcv_throw_exception; |
567 | |
567 | |