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 Nabeel <na...@wso2.com> on 2006/04/06 18:03:52 UTC
[Axis2] patch - callback client
This patch provides some methods to access callback specific data and to
set callback functions.
Please review and apply.
Thanks
-Nabeel
Re: [Axis2] patch - callback client
Posted by Nabeel <na...@wso2.com>.
I've tested with a sample PHP script. I'll convert it to C and send.
-Nabeel
Samisa Abeysinghe wrote:
> Hey Nabeeel, thanks for the patch.
> Have you got any sample/test written to test the interface introduced
> by the patch? if so please send in that as well.
>
> Thanks,
> Samisa...
>
> Nabeel wrote:
>
>> This patch provides some methods to access callback specific data and
>> to set callback functions.
>> Please review and apply.
>>
>> Thanks
>> -Nabeel
>>
>> ------------------------------------------------------------------------
>>
>> Index: callback.c
>> ===================================================================
>> --- callback.c (revision 391888)
>> +++ callback.c (working copy)
>> @@ -28,6 +28,8 @@
>> axis2_soap_envelope_t *envelope;
>> /** error code */
>> int error;
>> + /** to store callback specific data */
>> + void *data;
>> } axis2_callback_impl_t;
>>
>> /** Interface to implementation conversion macro */
>> @@ -82,8 +84,21 @@
>> axis2_callback_free (struct axis2_callback *callback,
>> axis2_env_t **env);
>>
>> +void AXIS2_CALL
>> +axis2_callback_set_on_complete(struct axis2_callback *callback,
>> + on_complete_func_ptr f);
>>
>> +void AXIS2_CALL
>> +axis2_callback_set_on_error(struct axis2_callback *callback,
>> + on_error_func_ptr f);
>> +
>> +axis2_status_t AXIS2_CALL
>> +axis2_callback_set_data(struct axis2_callback *callback,
>> + void *data);
>>
>> +void* AXIS2_CALL
>> +axis2_callback_get_data(struct axis2_callback *callback);
>> +
>> axis2_callback_t* AXIS2_CALL axis2_callback_create(axis2_env_t **env)
>> {
>> @@ -102,6 +117,7 @@
>> callback_impl->complete = AXIS2_FALSE;
>> callback_impl->envelope = NULL;
>> callback_impl->error = AXIS2_ERROR_NONE;
>> + callback_impl->data = NULL;
>> /* initialize ops */ callback_impl->callback.ops = @@
>> -143,7 +159,13 @@
>> callback_impl->callback.ops->set_error =
>> axis2_callback_set_error;
>> - +
>> + callback_impl->callback.ops->set_data =
>> + axis2_callback_set_data;
>> +
>> + callback_impl->callback.ops->get_data =
>> + axis2_callback_get_data;
>> +
>> callback_impl->callback.ops->free = axis2_callback_free;
>>
>> @@ -245,6 +267,43 @@
>> return AXIS2_SUCCESS;
>> }
>>
>> +axis2_status_t AXIS2_CALL
>> +axis2_callback_set_data(struct axis2_callback *callback,
>> + void *data)
>> +{
>> + axis2_callback_impl_t *callback_impl = NULL;
>> +
>> + callback_impl = AXIS2_INTF_TO_IMPL(callback);
>> +
>> + callback_impl->data = (void*)data;
>> +
>> + return AXIS2_SUCCESS;
>> +}
>> +
>> +void * AXIS2_CALL
>> +axis2_callback_get_data(struct axis2_callback *callback)
>> +{
>> + axis2_callback_impl_t *callback_impl = NULL;
>> +
>> + callback_impl = AXIS2_INTF_TO_IMPL(callback);
>> +
>> + return callback_impl->data;
>> +}
>> +
>> +void AXIS2_CALL
>> +axis2_callback_set_on_complete(struct axis2_callback *callback,
>> + on_complete_func_ptr func)
>> +{
>> + callback->ops->on_complete = func;
>> +}
>> +
>> +void AXIS2_CALL
>> +axis2_callback_set_on_error(struct axis2_callback *callback,
>> + on_error_func_ptr func)
>> +{
>> + callback->ops->on_error = func;
>> +}
>> +
>> axis2_status_t AXIS2_CALL axis2_callback_on_complete(struct
>> axis2_callback *callback,
>> axis2_env_t **env)
>> Index: ../../../include/axis2_callback.h
>> ===================================================================
>> --- ../../../include/axis2_callback.h (revision 391888)
>> +++ ../../../include/axis2_callback.h (working copy)
>> @@ -41,6 +41,11 @@
>> typedef struct axis2_callback_ops axis2_callback_ops_t;
>> typedef struct axis2_callback axis2_callback_t;
>> +typedef axis2_status_t(*on_complete_func_ptr)
>> + (struct axis2_callback *, axis2_env_t **);
>> +
>> +typedef axis2_status_t(*on_error_func_ptr)(struct axis2_callback *,
>> + axis2_env_t **, int);
>> /** * @brief Message Context ops struct
>> @@ -133,7 +138,21 @@
>> axis2_env_t **env, int error);
>>
>> -
>> + axis2_status_t (AXIS2_CALL *
>> + set_data)(struct axis2_callback *callback,
>> + void *data);
>> +
>> + void * (AXIS2_CALL *
>> + get_data)(struct axis2_callback *callback);
>> +
>> + void (AXIS2_CALL *
>> + set_on_complete)(struct axis2_callback *callback,
>> + on_complete_func_ptr f);
>> +
>> + void (AXIS2_CALL *
>> + set_on_error)(struct axis2_callback *callback,
>> + on_error_func_ptr f);
>> +
>> axis2_status_t (AXIS2_CALL *
>> free)(struct axis2_callback *callback, axis2_env_t **env);
>> @@ -181,7 +200,19 @@
>>
>> #define AXIS2_CALLBACK_SET_ERROR(callback, env, error) \
>> ((callback)->ops->set_error(callback, env, error))
>> -
>> +
>> +#define AXIS2_CALLBACK_GET_DATA(callback) \
>> + ((callback)->ops->get_data(callback))
>> +
>> +#define AXIS2_CALLBACK_SET_DATA(callback, data) \
>> + ((callback)->ops->set_data(callback, data))
>> +/*
>> +#define AXIS2_CALLBACK_SET_ON_COMPLETE(callback, func) \
>> + ((callback)->ops->set_on_complete(callback, func))
>> +
>> +#define AXIS2_CALLBACK_SET_ON_ERROR(callback, func) \
>> + ((callback)->ops->set_on_error(callback, func))
>> +*/
>> #define AXIS2_CALLBACK_FREE(callback, env) \
>> ((callback)->ops->free (callback, env))
>>
>>
>>
>
>
Re: [Axis2] patch - callback client
Posted by Samisa Abeysinghe <sa...@gmail.com>.
Hey Nabeeel, thanks for the patch.
Have you got any sample/test written to test the interface introduced by
the patch? if so please send in that as well.
Thanks,
Samisa...
Nabeel wrote:
> This patch provides some methods to access callback specific data and
> to set callback functions.
> Please review and apply.
>
> Thanks
> -Nabeel
>
>------------------------------------------------------------------------
>
>Index: callback.c
>===================================================================
>--- callback.c (revision 391888)
>+++ callback.c (working copy)
>@@ -28,6 +28,8 @@
> axis2_soap_envelope_t *envelope;
> /** error code */
> int error;
>+ /** to store callback specific data */
>+ void *data;
> } axis2_callback_impl_t;
>
> /** Interface to implementation conversion macro */
>@@ -82,8 +84,21 @@
> axis2_callback_free (struct axis2_callback *callback,
> axis2_env_t **env);
>
>+void AXIS2_CALL
>+axis2_callback_set_on_complete(struct axis2_callback *callback,
>+ on_complete_func_ptr f);
>
>+void AXIS2_CALL
>+axis2_callback_set_on_error(struct axis2_callback *callback,
>+ on_error_func_ptr f);
>+
>+axis2_status_t AXIS2_CALL
>+axis2_callback_set_data(struct axis2_callback *callback,
>+ void *data);
>
>+void* AXIS2_CALL
>+axis2_callback_get_data(struct axis2_callback *callback);
>+
> axis2_callback_t* AXIS2_CALL
> axis2_callback_create(axis2_env_t **env)
> {
>@@ -102,6 +117,7 @@
> callback_impl->complete = AXIS2_FALSE;
> callback_impl->envelope = NULL;
> callback_impl->error = AXIS2_ERROR_NONE;
>+ callback_impl->data = NULL;
>
> /* initialize ops */
> callback_impl->callback.ops =
>@@ -143,7 +159,13 @@
>
> callback_impl->callback.ops->set_error =
> axis2_callback_set_error;
>-
>+
>+ callback_impl->callback.ops->set_data =
>+ axis2_callback_set_data;
>+
>+ callback_impl->callback.ops->get_data =
>+ axis2_callback_get_data;
>+
> callback_impl->callback.ops->free =
> axis2_callback_free;
>
>@@ -245,6 +267,43 @@
> return AXIS2_SUCCESS;
> }
>
>+axis2_status_t AXIS2_CALL
>+axis2_callback_set_data(struct axis2_callback *callback,
>+ void *data)
>+{
>+ axis2_callback_impl_t *callback_impl = NULL;
>+
>+ callback_impl = AXIS2_INTF_TO_IMPL(callback);
>+
>+ callback_impl->data = (void*)data;
>+
>+ return AXIS2_SUCCESS;
>+}
>+
>+void * AXIS2_CALL
>+axis2_callback_get_data(struct axis2_callback *callback)
>+{
>+ axis2_callback_impl_t *callback_impl = NULL;
>+
>+ callback_impl = AXIS2_INTF_TO_IMPL(callback);
>+
>+ return callback_impl->data;
>+}
>+
>+void AXIS2_CALL
>+axis2_callback_set_on_complete(struct axis2_callback *callback,
>+ on_complete_func_ptr func)
>+{
>+ callback->ops->on_complete = func;
>+}
>+
>+void AXIS2_CALL
>+axis2_callback_set_on_error(struct axis2_callback *callback,
>+ on_error_func_ptr func)
>+{
>+ callback->ops->on_error = func;
>+}
>+
> axis2_status_t AXIS2_CALL
> axis2_callback_on_complete(struct axis2_callback *callback,
> axis2_env_t **env)
>Index: ../../../include/axis2_callback.h
>===================================================================
>--- ../../../include/axis2_callback.h (revision 391888)
>+++ ../../../include/axis2_callback.h (working copy)
>@@ -41,6 +41,11 @@
> typedef struct axis2_callback_ops axis2_callback_ops_t;
> typedef struct axis2_callback axis2_callback_t;
>
>+typedef axis2_status_t(*on_complete_func_ptr)
>+ (struct axis2_callback *, axis2_env_t **);
>+
>+typedef axis2_status_t(*on_error_func_ptr)(struct axis2_callback *,
>+ axis2_env_t **, int);
>
> /**
> * @brief Message Context ops struct
>@@ -133,7 +138,21 @@
> axis2_env_t **env,
> int error);
>
>-
>+ axis2_status_t (AXIS2_CALL *
>+ set_data)(struct axis2_callback *callback,
>+ void *data);
>+
>+ void * (AXIS2_CALL *
>+ get_data)(struct axis2_callback *callback);
>+
>+ void (AXIS2_CALL *
>+ set_on_complete)(struct axis2_callback *callback,
>+ on_complete_func_ptr f);
>+
>+ void (AXIS2_CALL *
>+ set_on_error)(struct axis2_callback *callback,
>+ on_error_func_ptr f);
>+
> axis2_status_t (AXIS2_CALL *
> free)(struct axis2_callback *callback,
> axis2_env_t **env);
>@@ -181,7 +200,19 @@
>
> #define AXIS2_CALLBACK_SET_ERROR(callback, env, error) \
> ((callback)->ops->set_error(callback, env, error))
>-
>+
>+#define AXIS2_CALLBACK_GET_DATA(callback) \
>+ ((callback)->ops->get_data(callback))
>+
>+#define AXIS2_CALLBACK_SET_DATA(callback, data) \
>+ ((callback)->ops->set_data(callback, data))
>+/*
>+#define AXIS2_CALLBACK_SET_ON_COMPLETE(callback, func) \
>+ ((callback)->ops->set_on_complete(callback, func))
>+
>+#define AXIS2_CALLBACK_SET_ON_ERROR(callback, func) \
>+ ((callback)->ops->set_on_error(callback, func))
>+*/
> #define AXIS2_CALLBACK_FREE(callback, env) \
> ((callback)->ops->free (callback, env))
>
>
>