[wsf-c-dev] svn commit r382 - wsf/php/src
svn at wso2.com
svn at wso2.com
Tue Jan 9 22:45:52 PST 2007
Author: nandika
Date: Tue Jan 9 22:45:35 2007
New Revision: 382
Modified:
wsf/php/src/util.c
wsf/php/src/wsf.c
wsf/php/src/wsf_util.h
Log:
env create functions moved to util.c
Modified: wsf/php/src/util.c
==============================================================================
--- wsf/php/src/util.c (original)
+++ wsf/php/src/util.c Tue Jan 9 22:45:35 2007
@@ -26,6 +26,119 @@
#include <axis2_addr.h>
#include "wsf.h"
#include "wsf_util.h"
+#include <axis2_error_default.h>
+#include <axis2_log_default.h>
+
+/* {{{ efree wrapper */
+static void WSF_CALL wsf_free_wrapper_cli(axis2_allocator_t *allocator, void *ptr)
+{
+ efree(ptr);
+}
+/* }}} end efree wrapper */
+
+/* {{{ malloc wrapper */
+static void* WSF_CALL wsf_malloc_wrapper_cli(axis2_allocator_t *allocator, size_t size)
+{
+ return emalloc(size);
+}
+/* }}} */
+/* {{{ realloc wrapper */
+static void* WSF_CALL wsf_realloc_warpper_cli(axis2_allocator_t *allocator,void *ptr, size_t size)
+{
+ return erealloc(ptr, size);
+}
+/* }}} */
+
+axis2_env_t *wsf_env_create_for_client(axis2_char_t *logpath)
+{
+ axis2_allocator_t *allocator = NULL;
+ axis2_error_t *error = NULL;
+ axis2_log_t *log = NULL;
+ axis2_char_t client_log[250];
+ axis2_thread_pool_t *thread_pool = NULL;
+ const axis2_char_t *LOG_NAME = "wsf.log";
+
+ allocator = emalloc(sizeof(axis2_allocator_t));
+
+ allocator->free_fn = wsf_free_wrapper_cli;
+ allocator->malloc_fn = wsf_malloc_wrapper_cli;
+ allocator->realloc = wsf_realloc_warpper_cli;
+
+ error = axis2_error_create(allocator);
+ if (logpath &&
+ 0 == strcmp(logpath, "") ||
+ 0 == strcmp(logpath, ".")||
+ 0 == strcmp(logpath, "./")) {
+ snprintf(client_log, 256, "%s", LOG_NAME);
+ } else {
+ snprintf(client_log, 256, "%s/%s", logpath, LOG_NAME);
+ }
+
+ thread_pool = axis2_thread_pool_init(allocator);
+ log = axis2_log_create(allocator, NULL, client_log);
+ return axis2_env_create_with_error_log_thread_pool(allocator, error, log, thread_pool);
+}
+
+/* {{{ malloc wrapper */
+static void* WSF_CALL wsf_malloc_wrapper(axis2_allocator_t *allocator, size_t size)
+{
+ return pemalloc(size,1);
+}
+/* }}} */
+/* {{{ realloc wrapper */
+static void* WSF_CALL wsf_realloc_warpper(axis2_allocator_t *allocator,void *ptr, size_t size)
+{
+ return perealloc(ptr, size, 1);
+}
+/* }}} */
+/* {{{ free wrapper */
+static void WSF_CALL wsf_free_wrapper(axis2_allocator_t *allocator, void *ptr)
+{
+ if (ptr)
+ pefree(ptr, 1);
+}
+/* }}} */
+
+/* {{{ axis2_environment create function */
+axis2_env_t* wsf_env_create(axis2_char_t *path_tolog)
+{
+ axis2_allocator_t *allocator = NULL;
+ axis2_error_t *error = NULL;
+ axis2_log_t *log = NULL;
+ axis2_char_t log_path[250];
+ axis2_env_t *env = NULL;
+ axis2_thread_pool_t *thread_pool = NULL;
+ const axis2_char_t *LOG_NAME = "wsf.log";
+ allocator = pemalloc(sizeof(axis2_allocator_t), 1);
+
+ allocator->free_fn = wsf_free_wrapper;
+ allocator->malloc_fn = wsf_malloc_wrapper;
+ allocator->realloc = wsf_realloc_warpper;
+
+ error = axis2_error_create(allocator);
+ if (path_tolog &&
+ 0 == strcmp(path_tolog, "") ||
+ 0 == strcmp(path_tolog, ".")||
+ 0 == strcmp(path_tolog, "./")) {
+ snprintf(log_path, 256, "%s", LOG_NAME);
+ } else {
+ snprintf(log_path, 256, "%s/%s", path_tolog, LOG_NAME);
+ }
+
+ thread_pool = axis2_thread_pool_init(allocator);
+ log = axis2_log_create(allocator, NULL, log_path);
+ env = axis2_env_create_with_error_log_thread_pool(allocator, error, log, thread_pool);
+ return env;
+}
+/* }}} */
+
+void wsf_env_free(axis2_env_t *env){
+
+}
+
+
+
+
ws_svc_info_t* ws_svc_info_create()
{
@@ -996,5 +1109,48 @@
tmp_node = AXIOM_NODE_GET_NEXT_SIBLING(tmp_node, env);
}
return;
-}
+}
+
+int wsf_util_set_headers(const axis2_env_t *env,
+ axis2_svc_client_t *svc_client, zval *msg TSRMLS_DC){
+ if(!svc_client || !msg)
+ return 0;
+ {
+ zval **tmp;
+ if(zend_hash_find(Z_OBJPROP_P(msg), "headers", sizeof("headers"),
+ (void**)&tmp) == SUCCESS && Z_TYPE_PP(tmp) == IS_ARRAY){
+ HashPosition *pos = NULL;
+ HashTable *ht = Z_ARRVAL_PP(tmp);
+
+ }
+ }
+ return 1;
+}
+
+char* wsf_util_serialize_om(axis2_env_t *env, axiom_node_t *ret_node)
+{
+ axiom_xml_writer_t *writer = NULL;
+ axiom_output_t *om_output = NULL;
+ axis2_char_t *buffer = NULL;
+
+ writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0, AXIS2_XML_PARSER_TYPE_BUFFER);
+ om_output = axiom_output_create (env, writer);
+ AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
+ buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, env);
+ return buffer;
+}
+
+xmlDocPtr wsf_util_serialize_om_to_doc(axis2_env_t *env, axiom_node_t *ret_node)
+{
+ axiom_xml_writer_t *writer = NULL;
+ axiom_output_t *om_output = NULL;
+ xmlDocPtr doc = NULL;
+
+ writer = axiom_xml_writer_create_for_memory(env,
+ NULL, AXIS2_TRUE, 0, AXIS2_XML_PARSER_TYPE_DOC);
+ om_output = axiom_output_create (env, writer);
+ AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
+ doc = (xmlDocPtr)AXIOM_XML_WRITER_GET_XML(writer, env);
+ return doc;
+}
Modified: wsf/php/src/wsf.c
==============================================================================
--- wsf/php/src/wsf.c (original)
+++ wsf/php/src/wsf.c Tue Jan 9 22:45:35 2007
@@ -29,8 +29,7 @@
#include "zend_objects.h"
#include "wsf_common.h"
#include <axis2_env.h>
-#include <axis2_error_default.h>
-#include <axis2_log_default.h>
+
#include "wsf_util.h"
#include <axis2_svc_client.h>
@@ -58,7 +57,6 @@
/** WSMessage functions */
PHP_METHOD(ws_message, __construct);
-PHP_METHOD(ws_message, __destruct);
PHP_METHOD(ws_message, __get);
ZEND_BEGIN_ARG_INFO(__ws_message_get_args, 0)
@@ -95,7 +93,6 @@
/** WSParam functions */
PHP_METHOD(ws_param, __construct);
-PHP_METHOD(ws_param, __destruct);
PHP_FUNCTION(ws_param_get_name);
PHP_FUNCTION(ws_param_get_value);
PHP_FUNCTION(ws_param_get_attribute);
@@ -118,7 +115,6 @@
zend_function_entry php_ws_message_class_functions[] ={
PHP_ME(ws_message, __construct, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(ws_message, __destruct, NULL, ZEND_ACC_PUBLIC)
PHP_ME(ws_message, __get, __ws_message_get_args , ZEND_ACC_PUBLIC)
{NULL , NULL, NULL}
};
@@ -154,7 +150,6 @@
PHP_FALIAS(getAttribute, ws_param_get_attribute, NULL)
PHP_FALIAS(addAttribute, ws_param_add_attribute, NULL)
PHP_ME(ws_param, __construct, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(ws_param, __destruct, NULL, ZEND_ACC_PUBLIC)
{NULL , NULL, NULL}
};
/** WSFault class entry */
@@ -196,49 +191,11 @@
static void ws_object_dtor(void *object,
zend_object_handle handle TSRMLS_DC);
-static axis2_env_t *ws_env_create(axis2_char_t *logpath);
-static axis2_env_t *ws_env_create_for_client(axis2_char_t *logpath);
-static void ws_env_free(axis2_env_t *env);
-/* {{{ malloc wrapper */
-static void* WSF_CALL ws_malloc_wrapper(axis2_allocator_t *allocator, size_t size)
-{
- return pemalloc(size,1);
-}
-/* }}} */
-/* {{{ realloc wrapper */
-static void* WSF_CALL ws_realloc_warpper(axis2_allocator_t *allocator,void *ptr, size_t size)
-{
- return perealloc(ptr, size, 1);
-}
-/* }}} */
-/* {{{ free wrapper */
-static void WSF_CALL ws_free_wrapper(axis2_allocator_t *allocator, void *ptr)
-{
- if (ptr)
- pefree(ptr, 1);
-}
-/* }}} */
-/* {{{ malloc wrapper */
-static void* WSF_CALL ws_malloc_wrapper_cli(axis2_allocator_t *allocator, size_t size)
-{
- return emalloc(size);
-}
-/* }}} */
-/* {{{ realloc wrapper */
-static void* WSF_CALL ws_realloc_warpper_cli(axis2_allocator_t *allocator,void *ptr, size_t size)
-{
- return erealloc(ptr, size);
-}
-/* }}} */
-/* {{{ free wrapper */
-static void WSF_CALL ws_free_wrapper_cli(axis2_allocator_t *allocator, void *ptr)
-{
- efree(ptr);
-}
-/* }}} */
+
+
/* {{{ ws_worker_dtor() */
static void ws_worker_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
@@ -257,15 +214,11 @@
xmlNodePtr nodep;
TSRMLS_FETCH();
-
object = (php_libxml_node_object *)zend_object_store_get_object(node TSRMLS_CC);
-
nodep = php_libxml_import_node(node TSRMLS_CC);
-
if (!nodep) {
return NULL;
}
-
if (nodep->doc == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Imported Node must have \
associated Document");
@@ -274,19 +227,18 @@
if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
nodep = xmlDocGetRootElement((xmlDocPtr) nodep);
}
-
reader = axiom_xml_reader_create_for_memory(env,
(void*)nodep->doc, 0, "utf-8", AXIS2_XML_PARSER_TYPE_DOC);
if (!reader) {
return NULL;
}
om_node = ws_util_read_payload(reader, env);
-
return om_node;
}
/* }}} end ws_convert_libxml_to_om */
+
/* {{{ proto create an WSFault object */
-static void ws_throw_soap_fault(axiom_soap_body_t *soap_body TSRMLS_DC)
+void ws_throw_soap_fault(axiom_soap_body_t *soap_body TSRMLS_DC)
{
if(soap_body)
@@ -367,72 +319,31 @@
}
/* {{{ proto ws_get_xml_node
- */
+*/
static xmlNodePtr ws_get_xml_node(zval *node)
{
php_libxml_node_object *object;
xmlNodePtr nodep;
TSRMLS_FETCH();
-
object = (php_libxml_node_object *)zend_object_store_get_object(node TSRMLS_CC);
-
nodep = php_libxml_import_node(node TSRMLS_CC);
-
if (!nodep) {
return NULL;
}
-
if (nodep->doc == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Imported Node must have \
associated Document");
return NULL;
}
-
if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
nodep = xmlDocGetRootElement((xmlDocPtr) nodep);
}
-
return nodep;
}
/* }}} end ws_get_xml_node */
-static void delete_hashtable(void *data)
-{
- HashTable *ht = (HashTable*)data;
- zend_hash_destroy(ht);
- efree(ht);
-}
-
-/* {{{ serialize om to string */
-static char* serialize_om(axis2_env_t *env, axiom_node_t *ret_node)
-{
- axiom_xml_writer_t *writer = NULL;
- axiom_output_t *om_output = NULL;
- axis2_char_t *buffer = NULL;
-
- writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0, AXIS2_XML_PARSER_TYPE_BUFFER);
- om_output = axiom_output_create (env, writer);
- AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
- buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, env);
- return buffer;
-}
-/* }}} */
-
/* {{{ serialize om to Dom */
-static xmlDocPtr serialize_om_to_doc(axis2_env_t *env, axiom_node_t *ret_node)
-{
- axiom_xml_writer_t *writer = NULL;
- axiom_output_t *om_output = NULL;
- xmlDocPtr doc = NULL;
-
- writer = axiom_xml_writer_create_for_memory(env,
- NULL, AXIS2_TRUE, 0, AXIS2_XML_PARSER_TYPE_DOC);
- om_output = axiom_output_create (env, writer);
- AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
- doc = (xmlDocPtr)AXIOM_XML_WRITER_GET_XML(writer, env);
- return doc;
-}
/* }}} */
/* {{{ wsf_module_entry */
@@ -537,7 +448,7 @@
REGISTER_LONG_CONSTANT("WS_SOAP_ROLE_NONE", WS_SOAP_ROLE_NONE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("WS_SOAP_ROLE_ULTIMATE_RECEIVER", WS_SOAP_ROLE_ULTIMATE_RECEIVER, CONST_CS | CONST_PERSISTENT);
- env = ws_env_create(WSF_GLOBAL(log_path));
+ env = wsf_env_create(WSF_GLOBAL(log_path));
if (WSF_GLOBAL(home))
home_folder = WSF_GLOBAL(home);
@@ -654,69 +565,6 @@
FREE_HASHTABLE(intern->std.properties);
}
-/* {{{ axis2_environment create function */
-static axis2_env_t* ws_env_create(axis2_char_t *path_tolog)
-{
- axis2_allocator_t *allocator = NULL;
- axis2_error_t *error = NULL;
- axis2_log_t *log = NULL;
- axis2_char_t log_path[250];
- axis2_env_t *env = NULL;
- axis2_thread_pool_t *thread_pool = NULL;
- const axis2_char_t *LOG_NAME = "wsf.log";
- allocator = pemalloc(sizeof(axis2_allocator_t), 1);
-
- allocator->free_fn = ws_free_wrapper;
- allocator->malloc_fn = ws_malloc_wrapper;
- allocator->realloc = ws_realloc_warpper;
-
- error = axis2_error_create(allocator);
- if (path_tolog &&
- 0 == strcmp(path_tolog, "") ||
- 0 == strcmp(path_tolog, ".")||
- 0 == strcmp(path_tolog, "./")) {
- snprintf(log_path, 256, "%s", LOG_NAME);
- } else {
- snprintf(log_path, 256, "%s/%s", path_tolog, LOG_NAME);
- }
-
- thread_pool = axis2_thread_pool_init(allocator);
- log = axis2_log_create(allocator, NULL, log_path);
- env = axis2_env_create_with_error_log_thread_pool(allocator, error, log, thread_pool);
- return env;
-}
-/* }}} */
-
-static axis2_env_t *ws_env_create_for_client(axis2_char_t *logpath)
-{
- axis2_allocator_t *allocator = NULL;
- axis2_error_t *error = NULL;
- axis2_log_t *log = NULL;
- axis2_char_t client_log[250];
- axis2_thread_pool_t *thread_pool = NULL;
- const axis2_char_t *LOG_NAME = "wsf.log";
-
- allocator = emalloc(sizeof(axis2_allocator_t));
-
- allocator->free_fn = ws_free_wrapper_cli;
- allocator->malloc_fn = ws_malloc_wrapper_cli;
- allocator->realloc = ws_realloc_warpper_cli;
-
- error = axis2_error_create(allocator);
- if (logpath &&
- 0 == strcmp(logpath, "") ||
- 0 == strcmp(logpath, ".")||
- 0 == strcmp(logpath, "./")) {
- snprintf(client_log, 256, "%s", LOG_NAME);
- } else {
- snprintf(client_log, 256, "%s/%s", logpath, LOG_NAME);
- }
-
- thread_pool = axis2_thread_pool_init(allocator);
- log = axis2_log_create(allocator, NULL, client_log);
- return axis2_env_create_with_error_log_thread_pool(allocator, error, log, thread_pool);
-}
-
PHP_FUNCTION(is_ws_fault)
{
@@ -907,7 +755,7 @@
payload = ws_util_read_payload(reader, env);
if(payload){
axis2_char_t *res_text = NULL;
- res_text = serialize_om(env, payload);
+ res_text = wsf_util_serialize_om(env, payload);
if(res_text){
add_property_string(object, AXIS2_MSG_P_STR, res_text, 1);
RETURN_STRING(res_text, 1);
@@ -938,7 +786,7 @@
int ret;
zval *value = NULL;
xmlDocPtr doc = NULL;
- doc = serialize_om_to_doc(env, payload);
+ doc = wsf_util_serialize_om_to_doc(env, payload);
if (!doc) {
RETURN_NULL();
}
@@ -1315,7 +1163,7 @@
zval *rfault = NULL;
MAKE_STD_ZVAL(rfault);
object_init_ex(rfault, ws_fault_class_entry);
- res_text = serialize_om(env, res_payload);
+ res_text = wsf_util_serialize_om(env, res_payload);
add_property_stringl(rfault, "str", res_text, strlen(res_text), 1);
RETURN_ZVAL(rfault, NULL, NULL);
}
@@ -1342,7 +1190,7 @@
}
}
- res_text = serialize_om(env , res_payload);
+ res_text = wsf_util_serialize_om(env , res_payload);
add_property_stringl(rmsg, AXIS2_MSG_P_STR, res_text, strlen(res_text), 1);
RETURN_ZVAL(rmsg, NULL, NULL);
}
@@ -2175,13 +2023,7 @@
}
/* }}} end WSParam::__construct */
-/* {{{ proto void WSParam::__destruct()
- destructor
- */
-PHP_METHOD(ws_param, __destruct)
-{
-}
/* }}} end WSParam::__destruct */
/* {{{ proto string getName()
Modified: wsf/php/src/wsf_util.h
==============================================================================
--- wsf/php/src/wsf_util.h (original)
+++ wsf/php/src/wsf_util.h Tue Jan 9 22:45:35 2007
@@ -26,6 +26,7 @@
#include "wsf_common.h"
#include <axiom_soap_body.h>
#include <TSRM.h>
+#include "ext/libxml/php_libxml.h"
axiom_node_t* ws_util_read_payload(
axiom_xml_reader_t *reader,
@@ -77,6 +78,16 @@
void ws_util_get_attachments(const axis2_env_t *env,
axiom_node_t *payload_node, zval *cid2str,zval *cid2contentType TSRMLS_DC);
+int wsf_util_set_headers(const axis2_env_t *env,
+ axis2_svc_client_t *svc_client,
+ zval *msg);
+char* wsf_util_serialize_om(axis2_env_t *env, axiom_node_t *ret_node);
+xmlDocPtr wsf_util_serialize_om_to_doc(axis2_env_t *env, axiom_node_t *ret_node);
+
+axis2_env_t* wsf_env_create(axis2_char_t *logpath);
+void wsf_env_free(axis2_env_t *env);
+
+axis2_env_t* wsf_env_create_for_client(axis2_char_t *cli_logpath);
#endif /* WS_UTIL_H */
More information about the Wsf-c-dev
mailing list