From ec1da36eaf2adfb5695f5c0d8ca92d23d31b56a5 Mon Sep 17 00:00:00 2001 From: Michael Lenaghan Date: Fri, 24 Oct 2014 17:56:49 -0400 Subject: Add an operation to fetch a parsed message. This avoids the copying of Data to NSData to Data which happens with the current approach. In one test case, a message with an ~18 MB attachment, the current (copying) approach peaked at ~150 MB of memory usage in my app. This new approach peaks at ~65 MB. Another test case, which often caused iOS to terminate my app, now peaks at ~90 MB. In addition to the improved memory usage this approach also means that message parsing is performed asynchronously. --- src/cmake/async.cmake | 1 + src/cmake/objc.cmake | 3 ++- src/cmake/public-headers.cmake | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src/cmake') diff --git a/src/cmake/async.cmake b/src/cmake/async.cmake index 58f410d4..947a69ee 100644 --- a/src/cmake/async.cmake +++ b/src/cmake/async.cmake @@ -13,6 +13,7 @@ set(async_imap_files async/imap/MCIMAPDisconnectOperation.cc async/imap/MCIMAPExpungeOperation.cc async/imap/MCIMAPFetchContentOperation.cc + async/imap/MCIMAPFetchParsedContentOperation.cc async/imap/MCIMAPFetchFoldersOperation.cc async/imap/MCIMAPFetchMessagesOperation.cc async/imap/MCIMAPFetchNamespaceOperation.cc diff --git a/src/cmake/objc.cmake b/src/cmake/objc.cmake index de4d8d06..cdf09dd6 100644 --- a/src/cmake/objc.cmake +++ b/src/cmake/objc.cmake @@ -16,6 +16,7 @@ set(objc_imap_files objc/imap/MCOIMAPCapabilityOperation.mm objc/imap/MCOIMAPCopyMessagesOperation.mm objc/imap/MCOIMAPFetchContentOperation.mm + objc/imap/MCOIMAPFetchParsedContentOperation.mm objc/imap/MCOIMAPFetchFoldersOperation.mm objc/imap/MCOIMAPFetchMessagesOperation.mm objc/imap/MCOIMAPFetchNamespaceOperation.mm @@ -84,7 +85,7 @@ set(objc_nntp_files objc/nntp/MCONNTPFetchOverviewOperation.mm objc/nntp/MCONNTPFetchServerTimeOperation.mm objc/nntp/MCONNTPOperation.mm - objc/nntp/MCONNTPSession.mm + objc/nntp/MCONNTPSession.mm ) set(objc_utils_files diff --git a/src/cmake/public-headers.cmake b/src/cmake/public-headers.cmake index 8b55c15e..65be3be7 100644 --- a/src/cmake/public-headers.cmake +++ b/src/cmake/public-headers.cmake @@ -86,6 +86,7 @@ async/imap/MCIMAPAppendMessageOperation.h async/imap/MCIMAPCopyMessagesOperation.h async/imap/MCIMAPFetchMessagesOperation.h async/imap/MCIMAPFetchContentOperation.h +async/imap/MCIMAPFetchParsedContentOperation.h async/imap/MCIMAPIdleOperation.h async/imap/MCIMAPFolderInfoOperation.h async/imap/MCIMAPFolderStatusOperation.h @@ -160,6 +161,7 @@ objc/imap/MCOIMAPAppendMessageOperation.h objc/imap/MCOIMAPCopyMessagesOperation.h objc/imap/MCOIMAPFetchMessagesOperation.h objc/imap/MCOIMAPFetchContentOperation.h +objc/imap/MCOIMAPFetchParsedContentOperation.h objc/imap/MCOIMAPSearchOperation.h objc/imap/MCOIMAPIdleOperation.h objc/imap/MCOIMAPFetchNamespaceOperation.h -- cgit v1.2.3