You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ma...@apache.org on 2008/06/04 11:35:30 UTC
svn commit: r663041 - in /webservices/axis2/branches/c/post_1_4_mtom/c:
axiom/include/axiom_mime_parser.h axiom/src/attachments/mime_parser.c
samples/client/mtom/mtom_client.c
samples/mtom_caching_callback/mtom_caching_callback.c
Author: manjula
Date: Wed Jun 4 02:35:30 2008
New Revision: 663041
URL: http://svn.apache.org/viewvc?rev=663041&view=rev
Log:
Fixing the case when we are not caching.
Modified:
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_parser.h
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_parser.c
webservices/axis2/branches/c/post_1_4_mtom/c/samples/client/mtom/mtom_client.c
webservices/axis2/branches/c/post_1_4_mtom/c/samples/mtom_caching_callback/mtom_caching_callback.c
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_parser.h
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_parser.h?rev=663041&r1=663040&r2=663041&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_parser.h (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_parser.h Wed Jun 4 02:35:30 2008
@@ -38,7 +38,7 @@
{
#endif
-#define AXIOM_MIME_PARSER_BUFFER_SIZE (1024*1024/2)
+#define AXIOM_MIME_PARSER_BUFFER_SIZE (1024/2)
#define AXIOM_MIME_PARSER_MAX_BUFFERS 1000
#define AXIOM_MIME_PARSER_END_OF_MIME_MAX_COUNT 100
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_parser.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_parser.c?rev=663041&r1=663040&r2=663041&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_parser.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_parser.c Wed Jun 4 02:35:30 2008
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <axiom_caching_callback.h>
#include <axutil_class_loader.h>
+#include <axutil_http_chunked_stream.h>
struct axiom_mime_parser
{
@@ -160,6 +161,10 @@
axiom_mime_parser_t *mime_parser,
const axutil_env_t *env);
+static axis2_bool_t axiom_mime_parser_is_more_data(
+ axiom_mime_parser_t *mime_parser,
+ const axutil_env_t *env,
+ axis2_callback_info_t *callback_info);
AXIS2_EXTERN axiom_mime_parser_t *AXIS2_CALL
axiom_mime_parser_create(
@@ -244,6 +249,9 @@
axis2_status_t status = AXIS2_FAILURE;
axis2_char_t *buffer = NULL;
int malloc_len = 0;
+ axis2_callback_info_t *callback_info = NULL;
+
+ callback_info = (axis2_callback_info_t *)callback_ctx;
size = AXIOM_MIME_PARSER_BUFFER_SIZE * (mime_parser->buffer_size);
@@ -339,9 +347,13 @@
{
memcpy(buffer, pos + 4, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -369,9 +381,12 @@
{
memcpy(buffer, buf_array[buf_num] + search_info->match_len2, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -436,9 +451,13 @@
{
memcpy(buffer, pos + temp_mime_boundary_size, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
+
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -481,9 +500,13 @@
{
memcpy(buffer, buf_array[buf_num] + search_info->match_len2, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -577,10 +600,14 @@
{
memcpy(buffer, pos + 4, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -625,9 +652,12 @@
{
memcpy(buffer, buf_array[buf_num] + search_info->match_len2, malloc_len);
}
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
- if(len > 0)
+ if(len >= 0)
{
buf_array[buf_num] = buffer;
len_array[buf_num] = malloc_len + len;
@@ -728,8 +758,11 @@
if(malloc_len != 2)
{
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
- if(len > 0)
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
+ if(len >= 0)
{
len_array[buf_num] = malloc_len + len;
}
@@ -763,8 +796,11 @@
}
if(malloc_len != 2)
{
- len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
- if(len > 0)
+ if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
+ {
+ len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
+ }
+ if(len >= 0)
{
len_array[buf_num] = malloc_len + len;
}
@@ -1740,3 +1776,31 @@
}
}
+
+static axis2_bool_t axiom_mime_parser_is_more_data(
+ axiom_mime_parser_t *mime_parser,
+ const axutil_env_t *env,
+ axis2_callback_info_t *callback_info)
+{
+ if(callback_info->chunked_stream)
+ {
+ if(axutil_http_chunked_stream_get_end_of_chunks(
+ callback_info->chunked_stream, env))
+ {
+ return AXIS2_FALSE;
+ }
+ else
+ {
+ return AXIS2_TRUE;
+ }
+ }
+
+ else if(callback_info->unread_len <= 0)
+ {
+ return AXIS2_FALSE;
+ }
+ else
+ {
+ return AXIS2_TRUE;
+ }
+}
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/samples/client/mtom/mtom_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/samples/client/mtom/mtom_client.c?rev=663041&r1=663040&r2=663041&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/samples/client/mtom/mtom_client.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/samples/client/mtom/mtom_client.c Wed Jun 4 02:35:30 2008
@@ -235,9 +235,9 @@
data_handler = axiom_text_get_data_handler(axiom_text, env);
/*axiom_data_handler_set_file_name(data_handler, env, (axis2_char_t *)to_save_name);*/
- if(axiom_data_handler_get_cached)
+ if(axiom_data_handler_get_cached(data_handler, env))
{
- printf("Attachmrnt is cached.\n");
+ printf("Attachment is cached.\n");
}
else
{
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/samples/mtom_caching_callback/mtom_caching_callback.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/samples/mtom_caching_callback/mtom_caching_callback.c?rev=663041&r1=663040&r2=663041&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/samples/mtom_caching_callback/mtom_caching_callback.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/samples/mtom_caching_callback/mtom_caching_callback.c Wed Jun 4 02:35:30 2008
@@ -40,7 +40,18 @@
const axutil_env_t* env)
{
FILE *fp = NULL;
+
+
fp = fopen("/tmp/attachment", "a+");
+
+ #if !defined(WIN32)
+ {
+ axis2_char_t permission_str[256];
+ sprintf(permission_str, "chmod 777 /tmp/attachment");
+ system(permission_str);
+ }
+ #endif
+
return (void *)fp;
}