ext_signal
[service]

Collaboration diagram for ext_signal:

Detailed Description

Module for manage external signal handling

TO COMPLETE

Service Meta Information

Contact:
Daniele Rondina aka Ge@@ru <geaaru@gmail.com>
Status:
EasyDbus Core Library
License:
GPL
Contributor(s):


Data Structures

struct  EasyDbus_ext_signal
 EasyDbus_ext_signal object. More...

Functions

int easydbus_ext_signal_add_to_service (EasyDbus_conn *data, EasyDbus_ext_signal *signal)
 Add EasyDbus_ext_signal object for handled external signal.
EasyDbus_ext_signaleasydbus_ext_signal_create (char *signal, char *path, char *interface, char *sender, char *destination, easydbus_ext_signal_callback_f signal_callback)
 Create EasyDbus_ext_signal object.
void easydbus_ext_signal_free_skeleton (EasyDbus_ext_signal *signal)
 Free EasyDbus_ext_signal object.


Function Documentation

int easydbus_ext_signal_add_to_service ( EasyDbus_conn data,
EasyDbus_ext_signal signal 
)

Add EasyDbus_ext_signal object for handled external signal.

Parameters:
data pointer to EasyDbus_conn object.
signal pointer to EasyDbus_ext_signal object.
Returns:
-1 on error

0 ok

Definition at line 57 of file register_ext_signal.c.

References EasyDbus_core::handled_ext_signals, EasyDbus_core::handled_signal, EasyDbus_ext_signal::next, EasyDbus_ext_signal::signal, and EasyDbus_ext_signal::signal_callback.

00059 {
00060    struct EasyDbus_core *core = (struct EasyDbus_core *) data;
00061    EasyDbus_ext_signal *el = NULL;
00062 
00063    if (!data || !signal || !signal->signal || 
00064         !signal->signal_callback)
00065       return -1;
00066 
00067    el = core->handled_ext_signals;
00068 
00069    if (el) {
00070       while (el->next != NULL)
00071          el = el->next;
00072       el->next = signal;
00073    }
00074    else {
00075       core->handled_signal = 1;
00076       core->handled_ext_signals = signal;
00077    }
00078 
00079    return 0;
00080 }

EasyDbus_ext_signal* easydbus_ext_signal_create ( char *  signal,
char *  path,
char *  interface,
char *  sender,
char *  destination,
easydbus_ext_signal_callback_f  signal_callback 
)

Create EasyDbus_ext_signal object.

Precondition:
signal != NULL signal_callback != NULL
Parameters:
signal signal name
path path of signal (can be equal to NULL).
interface interface of signal (can be equal to NULL).
sender sender of signal. (can be equal to NULL).
destination destination of signal (can be equal to NULL).
signal_callback callback called when signal is handled.
Returns:
NULL error

pointer to struct EasyDbus_ext_signal.

Definition at line 125 of file register_ext_signal.c.

References EasyDbus_ext_signal::destination, easydbus_ext_signal_free_skeleton(), EASYDBUS_MEMCOPY, EasyDbus_ext_signal::interface, EasyDbus_ext_signal::next, EasyDbus_ext_signal::path, EasyDbus_ext_signal::sender, EasyDbus_ext_signal::signal, and EasyDbus_ext_signal::signal_callback.

00132 {
00133    struct EasyDbus_ext_signal *ext_signal = NULL;
00134    int string_len;
00135 
00136    if (!signal || !signal_callback)
00137       return NULL;
00138 
00139    ext_signal = (struct EasyDbus_ext_signal *)
00140       malloc (sizeof (struct EasyDbus_ext_signal));
00141 
00142    if (!ext_signal)
00143       return NULL;
00144 
00145    memset (ext_signal, 0, sizeof (struct EasyDbus_ext_signal));
00146 
00147    ext_signal->signal = ext_signal->path =
00148       ext_signal->interface = ext_signal->sender = NULL;
00149    ext_signal->signal_callback = NULL;
00150    ext_signal->next = NULL;
00151 
00152    /* save signal string name */
00153    string_len = strlen (signal) + 1;
00154    ext_signal->signal = (char *) malloc (string_len);
00155    if (!ext_signal->signal)
00156       goto out_of_memory;
00157    EASYDBUS_MEMCOPY (ext_signal->signal, signal, string_len);
00158 
00159    /* save signal path string */
00160    if (path) {
00161       string_len = strlen (path) + 1;
00162       ext_signal->path = (char *) malloc (string_len);
00163       if (!ext_signal->path)
00164          goto out_of_memory;
00165       EASYDBUS_MEMCOPY (ext_signal->path, path, string_len);
00166    }
00167 
00168    /* save signal interface string */
00169    if (interface) {
00170       string_len = strlen (interface) + 1;
00171       ext_signal->interface = (char *) malloc (string_len);
00172       if (!ext_signal->interface)
00173          goto out_of_memory;
00174       EASYDBUS_MEMCOPY (ext_signal->interface, interface,
00175                         string_len);
00176    }
00177 
00178    /* save signal sender string */
00179    if (sender) {
00180       string_len = strlen (sender) + 1;
00181       ext_signal->sender = (char *) malloc (string_len);
00182       if (!ext_signal->sender)
00183          goto out_of_memory;
00184       EASYDBUS_MEMCOPY (ext_signal->sender, sender, string_len);
00185    }
00186 
00187    if (destination) {
00188       string_len = strlen (destination) + 1;
00189       ext_signal->destination = (char *) malloc (string_len);
00190       if (!ext_signal->destination)
00191          goto out_of_memory;
00192       EASYDBUS_MEMCOPY (ext_signal->destination, destination,
00193                         string_len);
00194    }
00195 
00196    ext_signal->signal_callback = signal_callback;
00197 
00198    return ext_signal;
00199 
00200  out_of_memory:
00201    if (ext_signal)
00202       easydbus_ext_signal_free_skeleton (ext_signal);
00203 
00204    return NULL;
00205 }

Here is the call graph for this function:

void easydbus_ext_signal_free_skeleton ( EasyDbus_ext_signal signal  ) 

Free EasyDbus_ext_signal object.

Parameters:
signal EasyDbus_ext_signal to free.

Definition at line 87 of file register_ext_signal.c.

References EasyDbus_ext_signal::destination, EasyDbus_ext_signal::interface, EasyDbus_ext_signal::path, EasyDbus_ext_signal::sender, and EasyDbus_ext_signal::signal.

Referenced by easydbus_conn_destroy(), and easydbus_ext_signal_create().

00088 {
00089    if (!signal)
00090       return;
00091 
00092    if (signal->signal)
00093       free (signal->signal);
00094 
00095    if (signal->path)
00096       free (signal->path);
00097 
00098    if (signal->interface)
00099       free (signal->interface);
00100 
00101    if (signal->sender)
00102       free (signal->sender);
00103 
00104    if (signal->destination)
00105       free (signal->destination);
00106 
00107    free (signal);
00108 }


Generated on Thu Apr 10 10:03:02 2008 for EasyDbus-0.2 by  doxygen 1.5.4