NAME
jQluster::Server - jQluster tranport server independent of underlying connection implementation
SYNOPSIS
my
@logs
= ();
my
$server
= jQluster::Server->new(
logger
=>
sub
{
## OPTIONAL
my
(
$level
,
$msg
) =
@_
;
push
(
@logs
, [
$level
,
$msg
]);
}
);
$server
->register(
unique_id
=>
"global unique ID for the connection"
,
message
=>
$registration_message
,
sender
=>
sub
{
my
(
$message
) =
@_
;
$some_transport
->
send
(
$message
);
}
);
$server
->distribute(
$message
);
$server
->unregister(
$unique_id
);
DESCRIPTION
jQluster::Server is part of jQluster project. To learn more about jQluster, visit https://github.com/debug-ito/jQluster.
jQluster::Server accepts connections from jQluster client nodes, receives messages from these nodes and distributes the messages to appropriate destination nodes.
jQluster::Server is independent of connection implementations. It just tells the destination connection's sender routine that it has incoming messages to the connection.
CLASS METHODS
$server = jQluster::Server->new(%args)
The constructor. Fields in %args
are:
logger
=> CODE (optional, default: log nothing)-
A subroutine reference that is called when the
$server
wants to log something.The
$logger
is called like$logger
->(
$level
,
$message
)
where
$level
is a log level string such as "info", "warning", "error" etc.$message
is the log message string.
OBJECT METHODS
$server->register(%args)
Register a new jQluster connection to a client node.
Fields in %args
are:
unique_id
=> ID (mandatory)-
The ID for the new connection. The ID must be unique within the
$server
. If you try to register an ID that is already registered, it croaks. message
=> jQluster MESSAGE HASH (mandatory)-
A jQluster message for registration. The message is usually created by a jQluster client node.
sender
=> CODE (mandatory)-
A subroutine reference that is called when the
$server
sends a message to this connection.The
$sender
is called like$sender
->(
$jqluster_message
)
where
$jqluster_message
is a jQluster message object. It's a plain hash-ref. It's up to the$sender
how to deliver the message to the client node.
$server->distribute($message)
Distirbute the given jQluster message to destination nodes.
$message
is a jQluster message object. It's a plain hash-ref.
$server->unregister($unique_id)
Unregister a connection to a client node.
$unique_id
is the unique ID you give when calling register()
method. If $unique_id
is not registered, it does nothing.
AUTHOR
Toshio Ito toshioito [at] cpan.org