Monotone-Parent: bde45b38158c1c9e5e5c05c00ef16e0ceb81c789

Monotone-Revision: 6cff836762bb35cb6c26ae5eb215e6ff131d480d

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-12-03T22:31:56
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-12-03 22:31:56 +00:00
parent b00c13ccde
commit ea8e2574a6
8 changed files with 995 additions and 186 deletions

View File

@@ -44,8 +44,9 @@
\details Initialize sogo mapistore backend
\return MAPISTORE_SUCCESS on success
*/
static int sogo_init (void)
*/
static int
sogo_init (void)
{
NSAutoreleasePool *pool;
SOGoProductLoader *loader;
@@ -90,7 +91,8 @@ static int sogo_init (void)
\param private_data pointer to the private backend context
*/
static int sogo_create_context(TALLOC_CTX *mem_ctx, const char *uri, void **private_data)
static int
sogo_create_context(TALLOC_CTX *mem_ctx, const char *uri, void **private_data)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -106,7 +108,7 @@ static int sogo_create_context(TALLOC_CTX *mem_ctx, const char *uri, void **priv
if (MAPIStoreContextK)
{
context = [MAPIStoreContextK contextFromURI: uri
inMemCtx: mem_ctx];
inMemCtx: mem_ctx];
[context retain];
cContext = talloc_zero(mem_ctx, sogo_context);
@@ -132,7 +134,8 @@ static int sogo_create_context(TALLOC_CTX *mem_ctx, const char *uri, void **priv
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_delete_context(void *private_data)
static int
sogo_delete_context(void *private_data)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -158,7 +161,8 @@ static int sogo_delete_context(void *private_data)
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_release_record(void *private_data, uint64_t fmid, uint8_t type)
static int
sogo_release_record(void *private_data, uint64_t fmid, uint8_t type)
{
NSAutoreleasePool *pool;
@@ -190,8 +194,9 @@ static int sogo_release_record(void *private_data, uint64_t fmid, uint8_t type)
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE error
*/
static int sogo_get_path(void *private_data, uint64_t fmid,
uint8_t type, char **path)
static int
sogo_get_path(void *private_data, uint64_t fmid,
uint8_t type, char **path)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -215,7 +220,8 @@ static int sogo_get_path(void *private_data, uint64_t fmid,
return rc;
}
static int sogo_op_get_fid_by_name(void *private_data, uint64_t parent_fid, const char* foldername, uint64_t *fid)
static int
sogo_op_get_fid_by_name(void *private_data, uint64_t parent_fid, const char* foldername, uint64_t *fid)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -246,8 +252,9 @@ static int sogo_op_get_fid_by_name(void *private_data, uint64_t parent_fid, cons
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_op_mkdir(void *private_data, uint64_t parent_fid, uint64_t fid,
struct SRow *aRow)
static int
sogo_op_mkdir(void *private_data, uint64_t parent_fid, uint64_t fid,
struct SRow *aRow)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -280,7 +287,8 @@ static int sogo_op_mkdir(void *private_data, uint64_t parent_fid, uint64_t fid,
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_op_rmdir(void *private_data, uint64_t parent_fid, uint64_t fid)
static int
sogo_op_rmdir(void *private_data, uint64_t parent_fid, uint64_t fid)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -313,7 +321,8 @@ static int sogo_op_rmdir(void *private_data, uint64_t parent_fid, uint64_t fid)
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_op_opendir(void *private_data, uint64_t parent_fid, uint64_t fid)
static int
sogo_op_opendir(void *private_data, uint64_t parent_fid, uint64_t fid)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -344,7 +353,8 @@ static int sogo_op_opendir(void *private_data, uint64_t parent_fid, uint64_t fid
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_op_closedir(void *private_data)
static int
sogo_op_closedir(void *private_data)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -375,10 +385,11 @@ static int sogo_op_closedir(void *private_data)
\return MAPISTORE_SUCCESS on success, otherwise MAPISTORE_ERROR
*/
static int sogo_op_readdir_count(void *private_data,
uint64_t fid,
uint8_t table_type,
uint32_t *RowCount)
static int
sogo_op_readdir_count(void *private_data,
uint64_t fid,
uint8_t table_type,
uint32_t *RowCount)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -402,12 +413,13 @@ static int sogo_op_readdir_count(void *private_data,
}
static int sogo_op_get_table_property(void *private_data,
uint64_t fid,
uint8_t table_type,
uint32_t pos,
uint32_t proptag,
void **data)
static int
sogo_op_get_table_property(void *private_data,
uint64_t fid,
uint8_t table_type,
uint32_t pos,
uint32_t proptag,
void **data)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -423,7 +435,7 @@ static int sogo_op_get_table_property(void *private_data,
[context setupRequest];
rc = [context getTableProperty: data withTag: proptag atPosition: pos
withTableType: table_type inFID: fid];
withTableType: table_type inFID: fid];
[context tearDownRequest];
[pool release];
@@ -431,10 +443,11 @@ static int sogo_op_get_table_property(void *private_data,
return rc;
}
static int sogo_op_openmessage(void *private_data,
uint64_t fid,
uint64_t mid,
struct mapistore_message *msg)
static int
sogo_op_openmessage(void *private_data,
uint64_t fid,
uint64_t mid,
struct mapistore_message *msg)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -458,9 +471,10 @@ static int sogo_op_openmessage(void *private_data,
}
static int sogo_op_createmessage(void *private_data,
uint64_t fid,
uint64_t mid)
static int
sogo_op_createmessage(void *private_data,
uint64_t fid,
uint64_t mid)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -483,9 +497,10 @@ static int sogo_op_createmessage(void *private_data,
return rc;
}
static int sogo_op_savechangesmessage(void *private_data,
uint64_t mid,
uint8_t flags)
static int
sogo_op_savechangesmessage(void *private_data,
uint64_t mid,
uint8_t flags)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -508,9 +523,10 @@ static int sogo_op_savechangesmessage(void *private_data,
return rc;
}
static int sogo_op_submitmessage(void *private_data,
uint64_t mid,
uint8_t flags)
static int
sogo_op_submitmessage(void *private_data,
uint64_t mid,
uint8_t flags)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -533,11 +549,12 @@ static int sogo_op_submitmessage(void *private_data,
return rc;
}
static int sogo_op_getprops(void *private_data,
uint64_t fmid,
uint8_t type,
struct SPropTagArray *SPropTagArray,
struct SRow *aRow)
static int
sogo_op_getprops(void *private_data,
uint64_t fmid,
uint8_t type,
struct SPropTagArray *SPropTagArray,
struct SRow *aRow)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -563,10 +580,11 @@ static int sogo_op_getprops(void *private_data,
}
static int sogo_op_setprops(void *private_data,
uint64_t fmid,
uint8_t type,
struct SRow *aRow)
static int
sogo_op_setprops(void *private_data,
uint64_t fmid,
uint8_t type,
struct SRow *aRow)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -589,9 +607,10 @@ static int sogo_op_setprops(void *private_data,
return rc;
}
static int sogo_op_set_property_from_fd(void *private_data,
uint64_t fmid, uint8_t type,
uint32_t property, int fd)
static int
sogo_op_set_property_from_fd(void *private_data,
uint64_t fmid, uint8_t type,
uint32_t property, int fd)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -619,9 +638,10 @@ static int sogo_op_set_property_from_fd(void *private_data,
return rc;
}
static int sogo_op_get_property_into_fd(void *private_data,
uint64_t fmid, uint8_t type,
uint32_t property, int fd)
static int
sogo_op_get_property_into_fd(void *private_data,
uint64_t fmid, uint8_t type,
uint32_t property, int fd)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -649,10 +669,11 @@ static int sogo_op_get_property_into_fd(void *private_data,
return rc;
}
static int sogo_op_modifyrecipients(void *private_data,
uint64_t mid,
struct ModifyRecipientRow *rows,
uint16_t count)
static int
sogo_op_modifyrecipients(void *private_data,
uint64_t mid,
struct ModifyRecipientRow *rows,
uint16_t count)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -677,9 +698,10 @@ static int sogo_op_modifyrecipients(void *private_data,
return rc;
}
static int sogo_op_deletemessage(void *private_data,
uint64_t mid,
uint8_t flags)
static int
sogo_op_deletemessage(void *private_data,
uint64_t mid,
uint8_t flags)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -702,9 +724,10 @@ static int sogo_op_deletemessage(void *private_data,
return rc;
}
static int sogo_op_get_folders_list(void *private_data,
uint64_t fmid,
struct indexing_folders_list **folders_list)
static int
sogo_op_get_folders_list(void *private_data,
uint64_t fmid,
struct indexing_folders_list **folders_list)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
@@ -727,6 +750,41 @@ static int sogo_op_get_folders_list(void *private_data,
return rc;
}
static int
sogo_op_set_restrictions (void *private_data, uint64_t fmid, uint8_t type,
struct mapi_SRestriction *res, uint8_t *tableStatus)
{
NSAutoreleasePool *pool;
sogo_context *cContext;
MAPIStoreContext *context;
int rc;
DEBUG (5, ("[SOGo: %s:%d]\n", __FUNCTION__, __LINE__));
pool = [NSAutoreleasePool new];
cContext = private_data;
context = cContext->objcContext;
if (context)
{
[context setupRequest];
rc = [context setRestrictions: res
withFMID: fmid andTableType: type
getTableStatus: tableStatus];
[context tearDownRequest];
[pool release];
}
else
{
NSLog (@" UNEXPECTED WEIRDNESS: RECEIVED NO CONTEXT");
rc = MAPI_E_NOT_FOUND;
}
return rc;
}
/**
\details Entry point for mapistore SOGO backend
@@ -751,12 +809,13 @@ int mapistore_init_backend(void)
backend.description = "mapistore SOGo backend";
backend.namespace = "sogo://";
/* Fill in all the operations */
backend.init = sogo_init;
backend.create_context = sogo_create_context;
backend.delete_context = sogo_delete_context;
backend.release_record = sogo_release_record;
backend.get_path = sogo_get_path;
backend.op_get_fid_by_name = sogo_op_get_fid_by_name;
backend.op_mkdir = sogo_op_mkdir;
backend.op_rmdir = sogo_op_rmdir;
@@ -764,18 +823,19 @@ int mapistore_init_backend(void)
backend.op_closedir = sogo_op_closedir;
backend.op_readdir_count = sogo_op_readdir_count;
backend.op_get_table_property = sogo_op_get_table_property;
backend.op_get_folders_list = sogo_op_get_folders_list;
backend.op_set_restrictions = sogo_op_set_restrictions;
backend.op_openmessage = sogo_op_openmessage;
backend.op_createmessage = sogo_op_createmessage;
backend.op_modifyrecipients = sogo_op_modifyrecipients;
backend.op_savechangesmessage = sogo_op_savechangesmessage;
backend.op_submitmessage = sogo_op_submitmessage;
backend.op_getprops = sogo_op_getprops;
backend.op_get_fid_by_name = sogo_op_get_fid_by_name;
backend.op_deletemessage = sogo_op_deletemessage;
backend.op_setprops = sogo_op_setprops;
backend.op_getprops = sogo_op_getprops;
backend.op_set_property_from_fd = sogo_op_set_property_from_fd;
backend.op_get_property_into_fd = sogo_op_get_property_into_fd;
backend.op_modifyrecipients = sogo_op_modifyrecipients;
backend.op_deletemessage = sogo_op_deletemessage;
backend.op_get_folders_list = sogo_op_get_folders_list;
/* Register ourselves with the MAPISTORE subsystem */
ret = mapistore_backend_register(&backend);