Changeset 14290 for lang/perl/POE-Component-Server-JSONRPC/trunk/lib/POE/Component/Server/JSONRPC.pm
- Timestamp:
- 06/20/08 16:31:08 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/POE-Component-Server-JSONRPC/trunk/lib/POE/Component/Server/JSONRPC.pm
r14243 r14290 5 5 use JSON::RPC::Common::Procedure::Call; 6 6 use JSON::RPC::Common::Procedure::Return; 7 8 use JSON::RPC::Common::Procedure::Return::Version_1_0;9 use JSON::RPC::Common::Procedure::Return::Version_1_0::Error;10 7 11 8 our $VERSION = '0.02'; … … 106 103 ); 107 104 105 has default_version => ( 106 isa => "Str", 107 is => "rw", 108 default => sub { "1.0" } 109 ); 110 111 has return_class => ( 112 isa => "ClassName", 113 is => "rw", 114 lazy_build => 1, 115 handles => { "create_return" => "new_from_data" }, 116 ); 117 118 sub _build_return_class { 119 my $self = shift; 120 121 my $class = JSON::RPC::Common::Procedure::Return->_version_class( $self->default_version ); 122 123 Class::MOP::load_class($class); 124 125 return $class; 126 } 127 108 128 =head1 HANDLER PARAMETERS 109 129 … … 218 238 } 219 239 } else { 220 # result, track req IDs, map back240 # FIXME result, track req IDs, map back 221 241 } 222 242 } else { 243 $msg = (split /\n/, $msg)[0]; 244 $msg =~ s/ at .+? line \d+//; 223 245 $kernel->yield(error => $client, $msg); 224 246 } … … 230 252 231 253 event error => sub { 232 my ($kernel, $client, $error, $call) = @_[KERNEL, ARG0 .. ARG2]; 233 234 if ( $call ) { 235 $client->put( $call->return_error($error) ); 236 } else { 237 $client->put( 238 JSON::RPC::Common::Procedure::Return::Version_1_0->new( 239 id => undef, 240 error => JSON::RPC::Common::Procedure::Return::Version_1_0::Error->new( 241 message => $error, 242 ), 243 ), 244 ); 245 } 254 my ($self, $kernel, $client, $error, $call) = @_[OBJECT, KERNEL, ARG0 .. ARG2]; 255 256 $client->put( $call ? $call->return_error($error) : $self->new_error($error) ); 257 }; 258 259 sub new_error { 260 my ( $self, @args ) = @_; 261 262 $self->create_return( 263 id => undef, 264 error => ( @args % 2 == 0 ? {@args} : $args[0] || "Invalid request" ), 265 ); 246 266 }; 247 267
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)