Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

NAME

DDC::Filter - DDC Query utilities: server filters (wrapper sockets)

SYNOPSIS

##========================================================================
## PRELIMINARIES
##========================================================================
## Constructors etc
$filter = $CLASS_OR_OBJ->new(%args); ##-- new filter object
##========================================================================
## Logging
$fh = $filter->logfh(); ##-- get log filehandle
$filter = $filter->logclose(); ##-- close log filehandle
undef = logmsg($level,@message); ##-- log a message
##========================================================================
## Server Methods: run
undef = $filter->run(); ##-- run the wrapper daemon
##========================================================================
## Server Methods: callback
\&callback_sub = $filter->_callback($netserver_generic); ##-- top-level callback
##========================================================================
## Server Methods: filters
$filtered_data = $filter->filterInput($data_from_client); ##-- input filtering callback
$filtered_data = $filter->filterOutput($data_from_server); ##-- output filtering callback
##========================================================================
## Inherited Methods
# ... any DDC::Client method ...

DESCRIPTION

Globals

Variable: @ISA

DDC::Filter inherits from DDC::Client.

Variable: %LOGLEVELS

Hash mapping symbolic log levels to numeric values, exportable.

Constructors etc

new
$filter = $CLASS_OR_OBJ->new(%args);
%args:
(
connect=>\%connectArgs, ##-- passed to IO::Socket::INET->new(), ##-- client args
bind =>\%bindArgs, ##-- args to NetServer::Generic->new()
logfile => $filename, ##-- for logging (defualt=&STDERR)
loglevel => $level, ##-- log level
)
additional object structure:
(
server=>$server, ##-- a NetServer::Generic object for listening
)
default %connectArgs:
PeerAddr=>'localhost',
PeerPort=>50000,
Proto=>'tcp',
Type=>SOCK_STREAM,
Blocking=>1,

(for connecting to the underlying DDC server).

default %bindArgs:
#hostname=>'localhost',
port=>$60000,
mode=>"forking",
allowed=>['127.0.0.1'],
listen=>128,
timeout=>60,

(for accepting incoming client connections).

Logging

logfh
$fh = $filter->logfh();

Get logging filehandle.

logclose
$filter = $filter->logclose();

Close log filehandle.

logmsg
undef = logmsg($level,@message);

Potentially log a message at $level.

Server Methods: run

run
undef = $filter->run();

Run the server, accepting incoming connections and calling callback(s) for each incoming query.

Server Methods: callback

_callback
\&callback_sub = $filter->_callback($netserver_generic);

Generic NetServer::Generic callback, called for each client. The default implmentation calls the filterInput() and filterOutput() methods, which should be sufficient for many applications.

Server Methods: filters

filterInput
$filtered_data = $filter->filterInput($data_from_client);

This method may be overridden in derived classes to perform filtering of data to be passed to the real DDC server.

The default implementation just returns $data_from_client unchanged.

filterOutput
$filtered_data = $filter->filterOutput($data_from_server);

This method may be overridden in derived classes to perform filtering of data to be passed back to the querying client.

The default implementation just returns $data_from_server unchanged.

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2006-2016 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.