Copyright © 2006 voice-system.ro
hash_size
(int)db_url
(str)db_table
(str)min_expires
(int)default_expires
(int)update_period
(int)hash_size
parameterdb_url
parameterdb_table
parametermin_expires
parameterdefault_expires
parameterupdate_period
parameterpua_api
structureThis module offer the functionality of a presence user agent client, sending Subscribe and Publish messages.
Now it can be used with the following modules: pua_mi and pua_usrloc. The pua_mi offer the possiblity to publish any kind of information or subscribing to a resource through fifo. The pua_usrloc module calls a function exported by pua modules to publish elementary presence information, such as basic status "open" or "closed", for clients that do not implement client-to-server presence.
The module use cache to store presentity list and writes to database on timer to be able to recover upon restart.
The following modules must be loaded before this module:
a database modules.
tm.
The following libraries or applications must be installed before running OpenSER with this module loaded:
libxml.
hash_size
(int)The size of the hash table used for storing Subscribe and Publish information.
Default value is "4".
min_expires
(int)The inferior expires limit for both Publish and Subscribe.
Default value is "0".
default_expires
(int)The default expires value used in case this information is not provisioned.
Default value is "3600".
update_period
(int)The interval at which the information in database and hash table should be updated. In the case of the hash table updating is deleting expired messages.
Default value is "30".
The module requires a new table in OpenSER database. Next SQL statement shows the syntax to create it.
Example 1-7. PUA tables
... use openser; CREATE TABLE pua ( id int(10) unsigned NOT NULL auto_increment, pres_uri varchar(128) NOT NULL, pres_id varchar(128) NOT NULL, expires int(11) NOT NULL, flag int(11) NOT NULL, etag varchar(128) NOT NULL, tuple_id varchar(128) NOT NULL, watcher_uri varchar(128) NOT NULL, call_id varchar(128) NOT NULL, to_tag varchar(128) NOT NULL, from_tag varchar(128) NOT NULL, cseq int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM; ...
The module provides the following functions that can be used in other OpenSER modules.
bind_pua(pua_api_t* api)
This function binds the pua modules and fills the structure with the two exported function.
send_publish(publ_info_t*)
This function receives as a parameter a structure with Publish required information and sends a Publish message.
The structure received as a parameter:
... typedef struct publ_info { str id; /* an id value unique for one combination of * pres_uri and flag */ str* pres_uri; /* the presentity uri */ str* body; /* the body of the Publish message; * can be NULL in case of an update */ time_t expires; /* the absolute value at which the message expires*/ int flag; /* it can be : INSERT_TYPE or UPDATE_TYPE * if missing it will be established according * to the result of the search in hash table*/ int source_flag; /* flag identifying the resource ; * used values: UL_PUBLISH, MI_PUBLISH, * MI_SUBSCRIBE */ }publ_info_t; ...
send_subscribe(subs_info_t*)
This function receives as a parameter a structure with Susbcribe required information and sends a Subscribe message.
... The structure received as a parameter: typedef struct subs_info { str id; /* an id value unique for one combination * of pres_uri and flag */ str* pres_uri; /* the presentity uri */ str* watcher_uri; /* the watcher uri */ time_t expires; /* the absolute value at which the message expires */ int flag; /* it can be : INSERT_TYPE or UPDATE_TYPE * not compulsory */ int source_flag; /* flag identifying the resource ; * used values: UL_PUBLISH, MI_PUBLISH, * MI_SUBSCRIBE */ }subs_info_t; ...
Take a look at http://www.openser-project.org/.
First at all check if your question was already answered on one of our mailing lists:
User Mailing List - http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
Developer Mailing List - http://lists.openser-project.org/cgi-bin/mailman/listinfo/devel
E-mails regarding any stable OpenSER release should be sent to
<users@lists.openser-project.org>
and e-mails regarding development versions
should be sent to <devel@lists.openser-project.org>
.
If you want to keep the mail private, send it to
<team@lists.openser-project.org>
.
Please follow the guidelines provided at: http://sourceforge.net/tracker/?group_id=139143.