SMP::SMPFilter Class Reference

Base class of filters. More...

#include <filter.h>

Collaboration diagram for SMP::SMPFilter:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 SMPFilter (void)
 constructor
virtual ~SMPFilter (void)
 destructor
void get_env (int *argc, char ***argv)
ssize_t smp_read (int port_id, void *buff, size_t nbytes)
 read bytes from buffer (Blocking read)
ssize_t smp_write (int port_id, const void *buff, size_t nbytes)
 write bytes to buffer (Blocking write)
ssize_t smp_read_nonblock (int port_id, void *buff, size_t nbytes)
 read bytes from buffer (Nonblocking read)
ssize_t smp_write_nonblock (int port_id, const void *buff, size_t nbytes)
 write bytes to buffer (Nonblocking write)
ssize_t smp_read_space (int port_id)
ssize_t smp_write_space (int port_id)
void smp_yield ()
ssize_t smp_p_read (int port_id, packet *p_buff, size_t npackets)
 read packets from buffer (Blocking read)
ssize_t smp_p_write (int port_id, const packet *p_buff, size_t npackets)
 write packets to buffer (Blocking write)
ssize_t smp_p_read_nonblock (int port_id, packet *p_buff, size_t npackets)
 read packets from buffer (Nonblocking read)
ssize_t smp_p_write_nonblock (int port_id, const packet *p_buff, size_t npackets)
 write packets to buffer (Nonblocking write)
bool smp_input_flush (int port_id, port_model model=DATA_PORT)
 flush data in the input buffer
bool smp_output_flush (int port_id, port_model model=DATA_PORT)
 flush data in the output buffer
bool inport_connected (port_model model=DATA_PORT)
 check if all input ports are connected
bool inport_connected (int port_id, port_model model=DATA_PORT)
 check if an input port is connected
bool outport_connected (port_model model=DATA_PORT)
 check if all output ports are connected
bool outport_connected (int port_id, port_model model=DATA_PORT)
 check if an output port is connected
void set_buf_status (port_type port, int port_id, int status)
 set buffer status at port port_id
int get_buf_status (port_type port, int port_id)
 get buffer status at port port_id
template<class Type>
bool get_property (const char *property_name, Type &data)
 get property item to local class member, it also does type auto conversion
string & get_property (const char *property_name)
 get property item to local class member, of type string
bool set_property (const char *property_name, const char *data)
 set property. Because each property is stored as string indexed by another string this function only accepts string type data
bool exit_check (void)
 return true if kernel has stopped, else return false
void slim_exit (void)
 set the exit flag so that kernel will stop
bool is_realtime (void)
 return true if this filter runs in realtime priority
void set_output_buf (int output_port, int buf_id, port_model model=DATA_PORT)
 set a buffer id to a output port
void set_signal_timeout (int usec)
 set signal handler's timeout in usec
int get_signal_timeout (void)
 get signal handler's timeout in usec
SMPSignalcreate_signal (SMP_SIGNAL_TYPE type=SMP_USEREVENT)
 a utility to create a signal
void unregister_watchdog ()
 Unregister the filter itself to watchdog, asking for it to stop watching it.
virtual int initialize ()
 Filter Initialization (optional) User may define this function to do initialization tasks to their own private data. Constructor for filter.
virtual int finalize ()
 Filter Finalization (optional) User may define this function to do finalization tasks to their own private data. Destructor for filter.
virtual int pause ()
 Filter Pause (optional).
virtual int resume ()
 Filter Resume (optional).
virtual int process ()=0
 Filter's main function. The Filter does things in this function.
virtual int property_handler ()
 import property to local variables (from string to user-defined) (optional)
int get_id ()
 get the filter's system id
void set_watchdog (bool enabled)
void set_signal_watchdog (bool enabled)

Static Public Member Functions

static void signal_handler_cleanup (void *arg)

Protected Member Functions

void setup (int fid, const char *fname, int major_version, int minor_version, int *in_buf, int num_in, int *out_buf, int num_out)
 setup basic filter property
void set_input_buf (int input_port, int buf_id, port_model model=DATA_PORT)
 set a buffer id to a input port
void process_wrapper ()
 this function calls process(), and after it returns, unregister itself to watchdog so that watchdog will not think of this filter as problematic
void set_rt_status (bool realtime)
 set realtime status of the filter this function is for kernel to set the bool flag in the filter which indicates whether the filter now runs in realtime priority

Protected Attributes

int id
char name [MAX_LEN]
int major
int minor
int priority
bool realtime_on
int num_inport
int num_outport
int * input_buffer
int * output_buffer
SMPKernelkernel
map< string, property_itemproperty

Friends

class SMPKernel

Detailed Description

Base class of filters.

Warning:
All filters in SMP should inherits this class.


Member Function Documentation

void SMP::SMPFilter::setup ( int  fid,
const char *  fname,
int  major_version,
int  minor_version,
int *  in_buf,
int  num_in,
int *  out_buf,
int  num_out 
) [protected]

setup basic filter property

Parameters:
fid filter id
fname filter name
major_version the major version number
minor_version the minor version number
in_buf input buffer id array
num_in number of input port
out_buf output buffer id array
num_out number of output port

void SMP::SMPFilter::set_input_buf ( int  input_port,
int  buf_id,
port_model  model = DATA_PORT 
) [protected]

set a buffer id to a input port

Parameters:
input_port the input port to set
buf_id the buffer id to assign

ssize_t SMP::SMPFilter::smp_read ( int  port_id,
void *  buff,
size_t  nbytes 
)

read bytes from buffer (Blocking read)

Parameters:
port_id input port id
buff memory area for read data
nbytes number of bytes to read
Returns:
size of bytes read

ssize_t SMP::SMPFilter::smp_write ( int  port_id,
const void *  buff,
size_t  nbytes 
)

write bytes to buffer (Blocking write)

Parameters:
port_id output port id
buff memory area for data
nbytes number of bytes to write
Returns:
size of bytes written

ssize_t SMP::SMPFilter::smp_read_nonblock ( int  port_id,
void *  buff,
size_t  nbytes 
)

read bytes from buffer (Nonblocking read)

See also:
smp_read()

ssize_t SMP::SMPFilter::smp_write_nonblock ( int  port_id,
const void *  buff,
size_t  nbytes 
)

write bytes to buffer (Nonblocking write)

See also:
smp_write()

ssize_t SMP::SMPFilter::smp_read_space ( int  port_id  ) 

return the available spaces to read on port=port_id

ssize_t SMP::SMPFilter::smp_write_space ( int  port_id  ) 

return the available spaces to write on port=port_id

void SMP::SMPFilter::smp_yield (  ) 

yield execution temporarily to other component

ssize_t SMP::SMPFilter::smp_p_read ( int  port_id,
packet p_buff,
size_t  npackets 
)

read packets from buffer (Blocking read)

Parameters:
port_id input port id
p_buff memory area for read packet array
npackets number of packets to read
Returns:
size of packets read

ssize_t SMP::SMPFilter::smp_p_write ( int  port_id,
const packet p_buff,
size_t  npackets 
)

write packets to buffer (Blocking write)

Parameters:
port_id output port id
p_buff memory area for packet array
npackets number of packets to write
Returns:
size of packets written

ssize_t SMP::SMPFilter::smp_p_read_nonblock ( int  port_id,
packet p_buff,
size_t  npackets 
)

read packets from buffer (Nonblocking read)

See also:
smp_p_read()

ssize_t SMP::SMPFilter::smp_p_write_nonblock ( int  port_id,
const packet p_buff,
size_t  npackets 
)

write packets to buffer (Nonblocking write)

See also:
smp_p_write()

bool SMP::SMPFilter::smp_input_flush ( int  port_id,
port_model  model = DATA_PORT 
)

flush data in the input buffer

Parameters:
port_id the port id
model the port model, DATA_PORT or SIGNAL_PORT.

bool SMP::SMPFilter::smp_output_flush ( int  port_id,
port_model  model = DATA_PORT 
)

flush data in the output buffer

Parameters:
port_id the port id
model the port model, DATA_PORT or SIGNAL_PORT.

bool SMP::SMPFilter::inport_connected ( port_model  model = DATA_PORT  )  [inline]

check if all input ports are connected

Returns:
true if all input ports are connected, else return false

bool SMP::SMPFilter::inport_connected ( int  port_id,
port_model  model = DATA_PORT 
) [inline]

check if an input port is connected

Parameters:
port_id the input port id to be checked
Returns:
true if the input port is connected, else return false

bool SMP::SMPFilter::outport_connected ( port_model  model = DATA_PORT  )  [inline]

check if all output ports are connected

Returns:
true if all output ports are connected, else return false

bool SMP::SMPFilter::outport_connected ( int  port_id,
port_model  model = DATA_PORT 
) [inline]

check if an output port is connected

Parameters:
port_id the output port id to be checked
Returns:
true if the output port is connected, else return false

template<class Type>
bool SMP::SMPFilter::get_property ( const char *  property_name,
Type &  data 
) [inline]

get property item to local class member, it also does type auto conversion

Parameters:
property_name the property indexed by this string
data the data which property will save to.
Note:
sample usage: int mydata; get_property("item name", mydata);
Warning:
this function cannot be used to read string type property, use the next get_property instead
See also:
get_property()

string & SMP::SMPFilter::get_property ( const char *  property_name  )  [inline]

get property item to local class member, of type string

Returns:
the string from the property

void SMP::SMPFilter::set_output_buf ( int  output_port,
int  buf_id,
port_model  model = DATA_PORT 
)

set a buffer id to a output port

See also:
set_input_buf

SMPSignal* SMP::SMPFilter::create_signal ( SMP_SIGNAL_TYPE  type = SMP_USEREVENT  ) 

a utility to create a signal

Parameters:
type the type of the signal
Returns:
the created signal

virtual int SMP::SMPFilter::initialize (  )  [virtual]

Filter Initialization (optional) User may define this function to do initialization tasks to their own private data. Constructor for filter.

Returns:

virtual int SMP::SMPFilter::finalize (  )  [virtual]

Filter Finalization (optional) User may define this function to do finalization tasks to their own private data. Destructor for filter.

Returns:

virtual int SMP::SMPFilter::pause (  )  [virtual]

Filter Pause (optional).

Returns:

virtual int SMP::SMPFilter::resume (  )  [virtual]

Filter Resume (optional).

Returns:

virtual int SMP::SMPFilter::process (  )  [pure virtual]

Filter's main function. The Filter does things in this function.

Returns:
Warning:
This function works as a thread. Be careful when coding.

virtual int SMP::SMPFilter::property_handler (  )  [virtual]

import property to local variables (from string to user-defined) (optional)

Warning:
should be defined whenever a filter makes uses of filter property during process()
Returns:

static void SMP::SMPFilter::signal_handler_cleanup ( void *  arg  )  [static]

unused so far, depricated


Member Data Documentation

int SMP::SMPFilter::id [protected]

the system id of filter

char SMP::SMPFilter::name[MAX_LEN] [protected]

the name of the filter

int SMP::SMPFilter::major [protected]

the version of the filter

int SMP::SMPFilter::priority [protected]

priority, min = -5, max = 5, currently only for PTH

int SMP::SMPFilter::num_inport [protected]

number of input ports

int SMP::SMPFilter::num_outport [protected]

number of output ports

int* SMP::SMPFilter::input_buffer [protected]

input buffers' id array if the value equals -1, it is not connected size is num_inport

int* SMP::SMPFilter::output_buffer [protected]

output buffers' id array if the value equals -1, it is not connected size is num_output

SMPKernel* SMP::SMPFilter::kernel [protected]

SMP kernel

map<string, property_item> SMP::SMPFilter::property [protected]

filter property double hash. 1st: Key is the item name, Value is the second hash; 2st: Key is the property name, Value is the item's value


The documentation for this class was generated from the following files:
Generated on Fri Aug 31 15:41:58 2007 for SCREAMLinuxMiddleware(SLIM) by  doxygen 1.5.1