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
|
# You may distribute under the terms of either the GNU General Public License
# or the Artistic License (the same terms as Perl itself)
#
# (C) Paul Evans, 2010-2024 -- leonerd@leonerd.org.uk
use v5.26;
use warnings;
use Object::Pad 0.800;
package Tangence::Server::Context 0.33;
class Tangence::Server::Context;
use Carp;
use Tangence::Constants;
=head1 NAME
C<Tangence::Server::Context> - server connection class for C<Tangence>
=head1 DESCRIPTION
This module is a component of L<Tangence::Server>. It is not intended for
end-user use directly.
=cut
field $stream :param :reader;
field $token :param;
sub BUILDARGS ( $class, $stream, $token )
{
return ( stream => $stream, token => $token );
}
field $responded;
# TODO: Object::Pad probably should do this bit
method DESTROY
{
$responded or croak "$self never responded";
}
method respond ( $message )
{
$responded and croak "$self has responded once already";
$stream->respond( $token, $message );
$responded = 1;
return;
}
method responderr ( $msg )
{
chomp $msg; # In case of simple ->responderr( $@ );
$self->respond( Tangence::Message->new( $stream, MSG_ERROR )
->pack_str( $msg )
);
}
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=cut
0x55AA;
|