NAME¶
Net::SIP::NATHelper::Server - server for Net::SIP::NATHelper::Client
DESCRIPTION¶
This module is a wrapper around Net::SIP::NATHelper::Base and will receive it's
instructions from Net::SIP::NATHelper::Client using RPC via sockets.
CONSTRUCTOR¶
- new ( [ HELPER ], @FDS )
- Will create an object which listens on all file descriptors
given in FDS for RPC from clients.
If HELPER is given and a Net::SIP::NATHelper::Base object or derived it will
be used, otherwise the helper will be created.
METHODS¶
- do_command ( FD )
- Called when FD is available for reading. Calls
accept on FD and reads the RPC packet from the resulting file
descriptor, executes it and returns result back.
Currently implemented commands are "allocate","activate"
and "close" which will map to the local methods
allocate_sockets, activate_session and close_session.
One might redefine or add commands by changing
"$self->{commands}". The key of this hash reference is the
command name and the value is the callback.
Unknown commands will be ignored, e.g nothing returned.
- loop
- This will loop over all file descriptors it gets from
callbacks in Net::SIP::NATHelper::Base and the file descriptors for
the RPC sockets.
When file descriptors gets available for reading it will execute the
callbacks, e.g. forward the RTP data or call do_command. In regular
intervals it will call expire from Net::SIP::NATHelper::Base to
expire the RTP sockets and sessions.
- allocate_sockets ( ... )
- Calls allocate_sockets of the local
Net::SIP::NATHelper::Base object. Takes and returns the same
arguments.
- activate_session ( ... )
- Calls activate_session of the local
Net::SIP::NATHelper::Base object. Takes the same arguments and returns 1
if the session was newly activated, -1 if it was activated before and
false if activation failed. Updates callbacks into the event loop.
- close_session ( ... )
- Calls activate_session of the local
Net::SIP::NATHelper::Base object. Takes the same arguments and returns the
number of closed sessions. Updates callbacks into the event loop.
- expire ( ... )
- Calls expire of the local Net::SIP::NATHelper::Base
object. Takes the same arguments and returns the number of expired
sessions. Updates callbacks into the event loop if necessary.
BUGS¶
The local event loop should be pluggable, so that other implementations could be
used. Right now it's a hard coded loop using select.