AnyEvent-JSONRPC
view release on metacpan or search on metacpan
inc/Spiffy.pm view on Meta::CPAN
179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
sub_start
=>
"sub {\n"
,
set_default
=>
" \$_[0]->{%s} = %s\n unless exists \$_[0]->{%s};\n"
,
init
=>
" return \$_[0]->{%s} = do { my \$self = \$_[0]; %s }\n"
.
" unless \$#_ > 0 or defined \$_[0]->{%s};\n"
,
weak_init
=>
" return do {\n"
.
" \$_[0]->{%s} = do { my \$self = \$_[0]; %s };\n"
.
" Scalar::Util::weaken(\$_[0]->{%s}) if ref \$_[0]->{%s};\n"
.
" \$_[0]->{%s};\n"
.
" } unless \$#_ > 0 or defined \$_[0]->{%s};\n"
,
return_if_get
=>
" return \$_[0]->{%s} unless \$#_ > 0;\n"
,
set
=>
" \$_[0]->{%s} = \$_[1];\n"
,
weaken
=>
" Scalar::Util::weaken(\$_[0]->{%s}) if ref \$_[0]->{%s};\n"
,
sub_end
=>
" return \$_[0]->{%s};\n}\n"
,
);
sub
field {
my
$package
=
caller
;
my
(
$args
,
@values
) =
do
{
no
warnings;
local
*boolean_arguments
=
sub
{ (
qw(-weak)
) };
local
*paired_arguments
=
sub
{ (
qw(-package -init)
) };
Spiffy->parse_arguments(
@_
);
};
my
(
$field
,
$default
) =
@values
;
$package
=
$args
->{-
package
}
if
defined
$args
->{-
package
};
die
"Cannot have a default for a weakened field ($field)"
if
defined
$default
&&
$args
->{-weak};
return
if
defined
&{
"${package}::$field"
};
my
$default_string
=
(
ref
(
$default
) eq
'ARRAY'
and not
@$default
)
?
'[]'
: (
ref
(
$default
) eq
'HASH'
and not
keys
%$default
)
?
'{}'
: default_as_code(
$default
);
my
$code
=
$code
{sub_start};
if
(
$args
->{-init}) {
my
$fragment
=
$args
->{-weak} ?
$code
{weak_init} :
$code
{init};
$code
.=
sprintf
$fragment
,
$field
,
$args
->{-init}, (
$field
) x 4;
}
$code
.=
sprintf
$code
{set_default},
$field
,
$default_string
,
$field
if
defined
$default
;
$code
.=
sprintf
$code
{return_if_get},
$field
;
$code
.=
sprintf
$code
{set},
$field
;
$code
.=
sprintf
$code
{weaken},
$field
,
$field
if
$args
->{-weak};
$code
.=
sprintf
$code
{sub_end},
$field
;
my
$sub
=
eval
$code
;
die
$@
if
$@;
no
strict
'refs'
;
*{
"${package}::$field"
} =
$sub
;
return
$code
if
defined
wantarray
;
}
lib/AnyEvent/JSONRPC/HTTP/Client.pm view on Meta::CPAN
1234567891011121314151617package
AnyEvent::JSONRPC::HTTP::Client;
use
Any::Moose;
use
Carp;
use
AnyEvent;
use
AnyEvent::HTTP;
use
MIME::Base64;
use
JSON::XS;
lib/AnyEvent/JSONRPC/HTTP/Server.pm view on Meta::CPAN
1234567891011121314151617package
AnyEvent::JSONRPC::HTTP::Server;
use
Moose;
use
Carp;
use
AnyEvent::HTTPD;
use
JSON::XS;
has
host
=> (
is
=>
'ro'
,
lib/AnyEvent/JSONRPC/TCP/Client.pm view on Meta::CPAN
123456789101112131415161718package
AnyEvent::JSONRPC::TCP::Client;
use
Any::Moose;
use
Carp;
use
AnyEvent;
use
AnyEvent::Socket;
use
AnyEvent::Handle;
has
host
=> (
is
=>
'ro'
,
lib/AnyEvent/JSONRPC/TCP/Client.pm view on Meta::CPAN
112113114115116117118119120121122123124125126127128129130131132
$self
->_handle_response(
$_
[1] );
});
});
while
(
my
$pooled
=
shift
@{
$self
->_request_pool }) {
$handle
->push_write(
json
=>
$pooled
->deflate );
}
$self
->handler(
$handle
);
};
weaken
$self
;
$self
->_connection_guard(
$guard
);
}
sub
call {
my
(
$self
,
$method
,
@params
) =
@_
;
my
$request
= JSON::RPC::Common::Procedure::Call->inflate (
version
=>
$self
->version,
id
=>
$self
->_next_id->(),
lib/AnyEvent/JSONRPC/TCP/Server.pm view on Meta::CPAN
1234567891011121314151617package
AnyEvent::JSONRPC::TCP::Server;
use
Moose;
use
Carp;
use
AnyEvent::Handle;
use
AnyEvent::Socket;
has
address
=> (
is
=>
'ro'
,
lib/AnyEvent/JSONRPC/TCP/Server.pm view on Meta::CPAN
9596979899100101102103104105106107108109110111112113114
fh
=>
$fh
,
);
$handle
->on_read(
sub
{
shift
->unshift_read(
json
=>
sub
{
$self
->_dispatch(
$indicator
,
@_
);
}),
});
$self
->_handlers->[
fileno
(
$fh
) ] =
$handle
;
};
weaken
$self
;
$self
;
}
sub
_dispatch {
my
(
$self
,
$indicator
,
$handle
,
$request
) =
@_
;
return
$self
->_batch(
$handle
,
@$request
)
if
ref
$request
eq
"ARRAY"
;
return
unless
$request
and
ref
$request
eq
"HASH"
;
( run in 0.607 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )