diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-11 09:12:46 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-04-11 09:12:46 +0000 |
| commit | b6972e8c1881148ffb940d459837de34af91fc38 (patch) | |
| tree | 38479e6bb8b2de074ec59931255500051154d3c0 | |
| parent | bc2e4973fef94307ecc82c71ef5fe64b6bb587af (diff) | |
Completed discovery with support of liberty wsf soap binding.
| -rw-r--r-- | lasso/id-wsf/discovery.c | 55 |
1 files changed, 43 insertions, 12 deletions
diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c index 0d0b54b6..9eff304a 100644 --- a/lasso/id-wsf/discovery.c +++ b/lasso/id-wsf/discovery.c @@ -23,6 +23,7 @@ */ #include <lasso/id-wsf/discovery.h> +#include <lasso/xml/soap_binding_correlation.h> struct _LassoDiscoveryPrivate { @@ -246,53 +247,77 @@ gint lasso_discovery_process_modify_msg(LassoDiscovery *discovery, const gchar *message) { - LassoDiscoModify *request; LassoDiscoModifyResponse *response; + LassoSoapBindingCorrelation *correlation; + LassoSoapEnvelope *envelope; LassoUtilityStatus *status; + gchar *messageId; g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - request = lasso_disco_modify_new_from_message(message); - LASSO_WSF_PROFILE(discovery)->request = LASSO_NODE(request); - /* App should process insert entries and remove entries (in ResourceOffering) */ + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(message)); + LASSO_WSF_PROFILE(discovery)->soap_envelope_request = envelope; + LASSO_WSF_PROFILE(discovery)->request = LASSO_NODE(envelope->Body->any->data); + + correlation = envelope->Header->Other->data; + messageId = correlation->messageID; + envelope = lasso_wsf_profile_build_soap_envelope(messageId); + LASSO_WSF_PROFILE(discovery)->soap_envelope_response = envelope; status = lasso_utility_status_new(LASSO_DST_STATUS_CODE_OK); response = lasso_disco_modify_response_new(status); LASSO_WSF_PROFILE(discovery)->response = LASSO_NODE(response); + envelope->Body->any = g_list_append(envelope->Body->any, response); + return 0; } gint lasso_discovery_process_modify_response_msg(LassoDiscovery *discovery, const gchar *message) { + LassoDiscoModifyResponse *response; + LassoSoapEnvelope *envelope; + LASSO_WSF_PROFILE(discovery)->response = LASSO_NODE(lasso_disco_modify_response_new_from_message(message)); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(message)); + LASSO_WSF_PROFILE(discovery)->soap_envelope_response = envelope; + + response = envelope->Body->any->data; + LASSO_WSF_PROFILE(discovery)->response = LASSO_NODE(response); + return 0; } gint lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *message) { - LassoDiscoQuery *request; LassoDiscoQueryResponse *response; + LassoSoapBindingCorrelation *correlation; + LassoSoapEnvelope *envelope; LassoUtilityStatus *status; + gchar *messageId; g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - request = lasso_disco_query_new_from_message(message); - LASSO_WSF_PROFILE(discovery)->request = LASSO_NODE(request); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(message)); + LASSO_WSF_PROFILE(discovery)->soap_envelope_request = envelope; + LASSO_WSF_PROFILE(discovery)->request = LASSO_NODE(envelope->Body->any->data); + + correlation = envelope->Header->Other->data; + messageId = correlation->messageID; + envelope = lasso_wsf_profile_build_soap_envelope(messageId); + LASSO_WSF_PROFILE(discovery)->soap_envelope_response = envelope; status = lasso_utility_status_new(LASSO_DST_STATUS_CODE_OK); response = lasso_disco_query_response_new(status); LASSO_WSF_PROFILE(discovery)->response = LASSO_NODE(response); - /* - * after the call of this method, app must add ResourceOffering - */ + envelope->Body->any = g_list_append(envelope->Body->any, response); return 0; } @@ -300,11 +325,17 @@ lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *messag gint lasso_discovery_process_query_response_msg(LassoDiscovery *discovery, const gchar *message) { + LassoDiscoQueryResponse *response; + LassoSoapEnvelope *envelope; + g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - LASSO_WSF_PROFILE(discovery)->response = - LASSO_NODE(lasso_disco_query_response_new_from_message(message)); + envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(message)); + LASSO_WSF_PROFILE(discovery)->soap_envelope_response = envelope; + + response = envelope->Body->any->data; + LASSO_WSF_PROFILE(discovery)->response = LASSO_NODE(response); return 0; } |
