Author: damitha
Date: Mon Jan 7 09:11:03 2008
New Revision: 609693
URL: http://svn.apache.org/viewvc?rev=609693&view=rev
Log:
fixing memory leaks
Modified:
webservices/sandesha/trunk/c/src/storage/sqlite/permanent_sender_mgr.c
Modified: webservices/sandesha/trunk/c/src/storage/sqlite/permanent_sender_mgr.c
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/sqlite/permanent_sender_mgr.c?rev=609693&r1=609692&r2=609693&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/sqlite/permanent_sender_mgr.c
(original)
+++ webservices/sandesha/trunk/c/src/storage/sqlite/permanent_sender_mgr.c Mon
Jan 7 09:11:03 2008
@@ -458,48 +458,128 @@
const axutil_env_t *env,
sandesha2_sender_bean_t *bean)
{
- int i = 0;
- int size = 0;
- int match_list_size = 0;
- axutil_array_list_t *match_list = NULL;
+ axis2_bool_t add_where = AXIS2_FALSE;
+ axis2_char_t *msg_id = NULL;
+ axis2_char_t *msg_ctx_ref_key = NULL;
+ axis2_char_t *internal_seq_id = NULL;
+ int sent_count = 0;
+ long msg_no = 0;
+ axis2_bool_t resend = AXIS2_FALSE;
+ axis2_bool_t send = AXIS2_FALSE;
+ long time_to_send = 0;
+ int msg_type = 0;
+ axis2_char_t *seq_id = NULL;
+ axis2_char_t *wsrm_anon_uri = NULL;
+ axis2_char_t *to_address = NULL;
axutil_array_list_t *find_list = NULL;
- axis2_char_t *sql_find = NULL;
+ axis2_char_t sql_find[1024];
sandesha2_permanent_sender_mgr_t *sender_mgr_impl = NULL;
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2]Entry:sandesha2_permanent_sender_mgr_find_by_sender_bean");
sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
- sql_find = "select msg_id, msg_ctx_ref_key, internal_seq_id,"\
+ if(bean)
+ {
+ msg_id = sandesha2_sender_bean_get_msg_id(bean,
+ env);
+ msg_ctx_ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(bean, env);
+ internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(bean, env);
+ sent_count= sandesha2_sender_bean_get_sent_count(bean, env);
+ msg_no = sandesha2_sender_bean_get_msg_no(bean, env);
+ send = sandesha2_sender_bean_is_send(bean, env);
+ resend = sandesha2_sender_bean_is_resend(bean, env);
+ time_to_send = sandesha2_sender_bean_get_time_to_send(bean, env);
+ msg_type = sandesha2_sender_bean_get_msg_type(bean, env);
+ seq_id = sandesha2_sender_bean_get_seq_id(bean, env);
+ wsrm_anon_uri = sandesha2_sender_bean_get_wsrm_anon_uri(bean, env);
+ to_address = sandesha2_sender_bean_get_to_address(bean, env);
+ }
+ sprintf(sql_find, "select msg_id, msg_ctx_ref_key, internal_seq_id,"\
"sent_count, msg_no, send, resend, time_to_send, msg_type, seq_id, "\
- "wsrm_anon_uri, to_address from sender;";
- find_list = sandesha2_permanent_bean_mgr_find(sender_mgr_impl->bean_mgr,
env,
- sandesha2_sender_find_callback, sql_find);
- if(find_list)
- size = axutil_array_list_size(find_list, env);
- if(!bean)
+ "wsrm_anon_uri, to_address from sender");
+ if(msg_ctx_ref_key)
{
- return find_list;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where msg_ctx_ref_key='%s'", msg_ctx_ref_key);
+ add_where = AXIS2_TRUE;
}
- match_list = axutil_array_list_create(env, 0);
- for(i = 0; i < size; i++)
+ if(time_to_send > 0)
{
- void *candidate = NULL;
- candidate = (void *) axutil_array_list_get(find_list, env, i);
- if(sandesha2_permanent_sender_mgr_match(sender_mgr, env, bean,
- candidate))
+ if(!add_where)
{
- match_list_size++;
- axutil_array_list_add(match_list, env, candidate);
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where time_to_send <= %ld", time_to_send);
}
else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and time_to_send <= %ld", time_to_send);
+ }
+ if(msg_id)
+ {
+ if(!add_where)
{
- sandesha2_sender_bean_free(candidate, env);
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where msg_id = '%s'", msg_id);
}
+ else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and msg_id = '%s'", msg_id);
}
- if(find_list)
- axutil_array_list_free(find_list, env);
+ if(internal_seq_id)
+ {
+ if(!add_where)
+ {
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where internal_seq_id = '%s'", internal_seq_id);
+ }
+ else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and internal_seq_id = '%s'", internal_seq_id);
+ }
+ if(msg_no > 0)
+ {
+ if(!add_where)
+ {
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where msg_no = %ld", msg_no);
+ }
+ else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and msg_no = %ld", msg_no);
+ }
+ if(msg_type != SANDESHA2_MSG_TYPE_UNKNOWN)
+ {
+ if(!add_where)
+ {
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where msg_type= %d", msg_type);
+ }
+ else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and msg_type = %d", msg_type);
+ }
+ {
+ if(!add_where)
+ {
+ add_where = AXIS2_TRUE;
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " where send = %d", send);
+ }
+ else
+ sprintf(sql_find + axutil_strlen(sql_find),
+ " and send = %d", send);
+ }
+ sprintf(sql_find + axutil_strlen(sql_find), ";");
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "sql_find_by_sender_bean:%s",
sql_find);
+ find_list = sandesha2_permanent_bean_mgr_find(sender_mgr_impl->bean_mgr,
env,
+ sandesha2_sender_find_callback, sql_find);
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2]Exit:sandesha2_permanent_sender_mgr_find_by_sender_bean");
- return match_list;
+ return find_list;
}
sandesha2_sender_bean_t *AXIS2_CALL
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]