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.

Reply via email to