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