progress callback on pop3

dvh-chacham15-master
DINH Viet Hoa 2013-01-18 00:50:07 -08:00
parent 9b26ecc3a8
commit 77fa37dd39
6 changed files with 25 additions and 6 deletions

View File

@ -135,7 +135,8 @@ char * mailstream_read_multiline(mailstream * s, size_t size,
MMAPString * stream_buffer,
MMAPString * multiline_buffer,
size_t progr_rate,
progress_function * progr_fun)
progress_function * progr_fun,
mailprogress_function * body_progr_fun, void * context)
{
size_t count;
char * line;
@ -165,8 +166,13 @@ char * mailstream_read_multiline(mailstream * s, size_t size,
count += strlen(line);
if ((size != 0) && (progr_rate != 0) && (progr_fun != NULL))
if (count - last >= progr_rate) {
(* progr_fun)(count, size);
last = count;
if (progr_fun != NULL) {
(* progr_fun)(count, size);
}
if (body_progr_fun != NULL) {
body_progr_fun(count, size, context);
}
last = count;
}
}

View File

@ -54,7 +54,8 @@ char * mailstream_read_multiline(mailstream * s, size_t size,
MMAPString * stream_buffer,
MMAPString * multiline_buffer,
size_t progr_rate,
progress_function * progr_fun);
progress_function * progr_fun,
mailprogress_function * body_progr_fun, void * context);
int mailstream_is_end_multiline(const char * line);

View File

@ -1834,7 +1834,7 @@ static char * read_multiline(newsnntp * f, size_t size,
{
return mailstream_read_multiline(f->nntp_stream, size,
f->nntp_stream_buffer, multiline_buffer,
f->nntp_progr_rate, f->nntp_progr_fun);
f->nntp_progr_rate, f->nntp_progr_fun, NULL, NULL);
}

View File

@ -227,6 +227,8 @@ mailpop3 * mailpop3_new(size_t progr_rate, progress_function * progr_fun)
#endif
f->pop3_timeout = 0;
f->pop3_progress_fun = NULL;
f->pop3_progress_context = NULL;
return f;
@ -1285,7 +1287,7 @@ static char * read_multiline(mailpop3 * f, size_t size,
{
return mailstream_read_multiline(f->pop3_stream, size,
f->pop3_stream_buffer, multiline_buffer,
f->pop3_progr_rate, f->pop3_progr_fun);
f->pop3_progr_rate, f->pop3_progr_fun, f->pop3_progress_fun, f->pop3_progress_context);
}
static int send_command(mailpop3 * f, char * command)
@ -1581,3 +1583,10 @@ time_t mailpop3_get_timeout(mailpop3 * f)
{
return f->pop3_timeout;
}
void mailpop3_set_progress_callback(mailpop3 * f, mailprogress_function * progr_fun, void * context)
{
f->pop3_progress_fun = progr_fun;
f->pop3_progress_context = context;
}

View File

@ -64,6 +64,7 @@ LIBETPAN_EXPORT
time_t mailpop3_get_timeout(mailpop3 * f);
LIBETPAN_EXPORT
void mailpop3_set_progress_callback(mailpop3 * f, mailprogress_function * progr_fun, void * context);
LIBETPAN_EXPORT
int mailpop3_connect(mailpop3 * f, mailstream * s);

View File

@ -95,6 +95,8 @@ struct mailpop3
} pop3_sasl;
time_t pop3_timeout;
mailprogress_function * pop3_progress_fun;
void * pop3_progress_context;
};
typedef struct mailpop3 mailpop3;