You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by Ishan De Silva <is...@gmail.com> on 2006/10/09 07:26:03 UTC
Savan/C (WS-Eventing implementation for Axis2/C)
Hi,
I have been working on a Savan implementation. The initial design is
as follows.
This is implemented as an Axis2 module, in the same level as rampart.
Folder structure
================
savan/
+--src/
| +--client/
| | savan_client.c
| +--core/
| | mod_savan.c
| | savan_sub_processor.c
| +--data/
| | module.xml
| +--handlers/
| | savan_in_handler.c
| | savan_out_handler.c
| +--msgreceivers/
| | savan_msg_recv.c
| +--subscribers/
| | savan_subscriber.c
| +--util/
| savan_util.c
+--samples/
+server/
|
+client/
savan_client.c
--------------
- This provides the WSE client API. The following functions can be called to
send a "subscribe" request.
xiom_node_t* AXIS2_CALL
savan_client_subscribe(
const axis2_env_t *env,
axis2_svc_client_t *svc_client,
axis2_hash_t *options)
"options" is a hash map with the values that can be included in a
Subscribe request. The following keys are provided to identify those values.
#define SAVAN_OP_KEY_ENDTO_EPR "savan_op_key_endto"
#define SAVAN_OP_KEY_DELIVERY_MODE "savan_op_key_del_mode"
#define SAVAN_OP_KEY_NOTIFY_EPR "savan_op_key_notify"
#define SAVAN_OP_KEY_SUB_ID "savan_op_key_sub_id"
#define SAVAN_OP_KEY_EXPIRES "savan_op_key_expires"
#define SAVAN_OP_KEY_FILTER "savan_op_key_filter"
Similar functions would be provided for "Renew", "Unsubscribe" and
"GetStatus"
operations.
savan_sub_processor.c
---------------------
This is the Savan Subscription Processor. It will be called by the Savan
In Handler to process incoming WSE client requests. It's main function
is as follows:
- extract subcription details such as NotifyTo and EndTo from the
incoming request
- create a "subscriber" instance and set the extracted info
- put the created subscriber in a subscriber store (a hash map)
maintained in the service
The subscription processor will also process "Unsubscribe" and "Renew"
requests.
savan_msg_recv.c
----------------
This will create the "responses" to client requests.
e.g.:
For a Subscription request it will create a SubscriptionResponse message.
savan_subscriber.c
------------------
A server side representation of a WSE client
In addition to holding request data, this will also handle publications.
axis2_status_t AXIS2_CALL
savan_subscriber_publish(const axis2_env_t *env,
struct axis2_msg_ctx *msg_ctx);
Issues
======
1. The existing message receivers (e.g. axis2_raw_xml_in_out_msg_recv)
are separate libraries, with their own axis2_get_instance() functions.
However, savan_msg_recv() should be bundled in to the savan library.
How can this be done?
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org