ability to add an MTOM sending callback without requiring a module ------------------------------------------------------------------
Key: AXIS2C-1417 URL: https://issues.apache.org/jira/browse/AXIS2C-1417 Project: Axis2-C Issue Type: New Feature Components: mtom Affects Versions: 1.6.0 Environment: $ gcc --version gcc (GCC) 4.2.2 Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ ld --version GNU ld version 2.17.50.0.6-2.el5 20061020 Copyright 2005 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty. $ uname -a Linux <hostname> 2.6.18-8.el5 #1 SMP Thu Mar 15 19:46:53 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux Reporter: Russell Tempero Attachments: axis_changes.diff We wanted to be able to specify our own set of functions for reading file data which is currently supported in Axis2 via sending callback modules. However, we did not want the inefficiency associated with loading another dynamic library. Our solution was to alter the Axis code to allow us to achieve the same functionality by only passing a few function pointers. Note that we also added support for using the callback handlers to send file attachments as non-MTOM (base-64 encoded) data. See changes to data_handler.c. Some suggested further changes: - add a case to axiom_data_handler_read_from() for AXIOM_DATA_HANDLER_TYPE_CALLBACK that works similarly to my addition for AXIOM_DATA_HANDLER_TYPE_HANDLER. This will allow traditional call back handlers (those loaded via a module) can be used to send non-MTOM data. - alter axiom_data_handler_read_from() to work even if the "data_size" function is not specified. My idea was to check if this function is not specified or if it returns some special value (i.e. a negative number). If so, a much less efficient, brute-force method could be employed to determine the size of the data. One way would be to iterate once through the data, only counting the size and throwing away the actual data. Then create a buffer of the proper size and iterate a second time through the data while filling the buffer. Hopefully this patch is useful. Thanks, Russell -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.