diff --git a/OpenChange/MAPIStoreFolder.h b/OpenChange/MAPIStoreFolder.h index 262334dfc..ee660ba02 100644 --- a/OpenChange/MAPIStoreFolder.h +++ b/OpenChange/MAPIStoreFolder.h @@ -142,6 +142,7 @@ - (int) modifyPermissions: (struct PermissionData *) permissions withCount: (uint16_t) pcount andFlags: (int8_t) flags; +- (enum mapistore_error) preloadMessageBodies: (const struct I8Array_r *) mids; /* helpers */ - (uint64_t) idForObjectWithKey: (NSString *) childKey; diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 36d057592..18fdecce5 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -1751,6 +1751,11 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe return MAPISTORE_SUCCESS; } +- (enum mapistore_error) preloadMessageBodies: (const struct I8Array_r *) mids +{ + return MAPISTORE_SUCCESS; +} + - (uint64_t) objectId { uint64_t objectId; diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index 09921b9b6..82565ad60 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -796,6 +796,34 @@ sogo_folder_modify_permissions(void *folder_object, uint8_t flags, return rc; } +static enum mapistore_error +sogo_folder_preload_message_bodies(void *folder_object, const struct I8Array_r *mids) +{ + struct MAPIStoreTallocWrapper *wrapper; + NSAutoreleasePool *pool; + MAPIStoreFolder *folder; + int rc; + + DEBUG (5, ("[SOGo: %s:%d]\n", __FUNCTION__, __LINE__)); + + if (folder_object) + { + wrapper = folder_object; + folder = wrapper->instance; + GSRegisterCurrentThread (); + pool = [NSAutoreleasePool new]; + rc = [folder preloadMessageBodies: mids]; + [pool release]; + GSUnregisterCurrentThread (); + } + else + { + rc = sogo_backend_unexpected_error(); + } + + return rc; +} + static enum mapistore_error sogo_message_get_message_data(void *message_object, TALLOC_CTX *mem_ctx, @@ -1506,6 +1534,7 @@ int mapistore_init_backend(void) backend.folder.get_child_count = sogo_folder_get_child_count; backend.folder.open_table = sogo_folder_open_table; backend.folder.modify_permissions = sogo_folder_modify_permissions; + backend.folder.preload_message_bodies = sogo_folder_preload_message_bodies; backend.message.create_attachment = sogo_message_create_attachment; backend.message.get_attachment_table = sogo_message_get_attachment_table; backend.message.open_attachment = sogo_message_open_attachment;