You are viewing a plain text version of this content. The canonical link for it is here.
Posted to savan-dev@ws.apache.org by da...@apache.org on 2007/08/10 06:53:04 UTC
svn commit: r564462 - in /webservices/savan/trunk/c:
include/savan_constants.h src/subs_mgr/subs_mgr.c
Author: damitha
Date: Thu Aug 9 21:53:02 2007
New Revision: 564462
URL: http://svn.apache.org/viewvc?view=rev&rev=564462
Log:
adding topic list retrieval functionality
Modified:
webservices/savan/trunk/c/include/savan_constants.h
webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c
Modified: webservices/savan/trunk/c/include/savan_constants.h
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?view=diff&rev=564462&r1=564461&r2=564462
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Thu Aug 9 21:53:02 2007
@@ -72,6 +72,10 @@
#define ELEM_NAME_ADD_SUBSCRIBER "AddSubscriber"
#define ELEM_NAME_REMOVE_SUBSCRIBER "RemoveSubscriber"
#define ELEM_NAME_TOPIC "Topic"
+#define ELEM_NAME_TOPICS "Topics"
+#define ELEM_NAME_GET_TOPIC_LIST "get_topic_list"
+#define ELEM_NAME_ADD_TOPIC "AddTopic"
+#define ELEM_NAME_REMOVE_TOPIC "RemoveTopic"
#define DEFAULT_DELIVERY_MODE "http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push"
/* Eventing element names */
Modified: webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c
URL: http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c?view=diff&rev=564462&r1=564461&r2=564462
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c Thu Aug 9 21:53:02 2007
@@ -479,4 +479,80 @@
return subs_list_node;
}
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+savan_subs_mgr_get_topic_list(
+ const axutil_env_t *env,
+ axiom_node_t *node,
+ axis2_msg_ctx_t *msg_ctx)
+{
+
+ axis2_svc_t *subs_svc = NULL;
+ axutil_param_t *param = NULL;
+ axutil_hash_t *topic_store = NULL;
+ axutil_hash_index_t *hi = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axiom_node_t *topic_list_node = NULL;
+ axiom_element_t* topic_list_elem = NULL;
+
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "Start:savan_subs_mgr_get_topic_list");
+ subs_svc = axis2_msg_ctx_get_svc(msg_ctx, env);
+ param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+ if (!param)
+ {
+ savan_util_set_store(subs_svc, env, SAVAN_TOPIC_LIST);
+ param = axis2_svc_get_param(subs_svc, env, SAVAN_TOPIC_LIST);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Savan Topic List is empty");
+ }
+
+ topic_store = (axutil_hash_t*)axutil_param_get_value(param, env);
+ if(!topic_store)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[ML] Failed to extract the "
+ "topic store");
+ return NULL;
+ }
+
+ /* Expected request format is :-
+ * <ns1:get_topic_list xmlns:ns1="http://ws.apache.org/savan">
+ * </ns1:get_topic_list>
+ */
+ if (!node) /* 'get_topic_list' node */
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL,
+ AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "Echo client ERROR: input parameter NULL");
+ return NULL;
+ }
+ /* create the body of the topic_list element */
+ ns1 = axiom_namespace_create (env, SAVAN_NAMESPACE, SAVAN_NS_PREFIX);
+ topic_list_elem = axiom_element_create(env, NULL, ELEM_NAME_TOPICS, ns1,
+ &topic_list_node);
+ for (hi = axutil_hash_first(topic_store, env); hi; hi =
+ axutil_hash_next(env, hi))
+ {
+ axis2_char_t *topic = NULL;
+ const void *key = NULL;
+ axutil_hash_this(hi, &key, NULL, NULL);
+ topic = (axis2_char_t *)key;
+
+ if (topic)
+ {
+ axiom_node_t *topic_node = NULL;
+ axiom_element_t* topic_elem = NULL;
+
+ /* create the topic element */
+ topic_elem = axiom_element_create(env, topic_list_node,
+ ELEM_NAME_TOPIC, ns1, &topic_node);
+ if(topic)
+ axiom_element_set_text(topic_elem, env, topic, topic_node);
+ }
+ key = NULL;
+ }
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "End:savan_subs_mgr_get_topic_list");
+ return topic_list_node;
+}
+