diff --git a/OpenChange/MAPIStoreContext.h b/OpenChange/MAPIStoreContext.h index d57ffeb74..6d533c79d 100644 --- a/OpenChange/MAPIStoreContext.h +++ b/OpenChange/MAPIStoreContext.h @@ -104,6 +104,7 @@ - (uint64_t) idForObjectWithKey: (NSString *) key inFolderURL: (NSString *) folderURL; - (uint64_t) getNewChangeNumber; +- (NSArray *) getNewChangeNumbers: (NSUInteger) max; /* subclass methods */ + (NSString *) MAPIModuleName; diff --git a/OpenChange/MAPIStoreContext.m b/OpenChange/MAPIStoreContext.m index 60fffa2fd..b012e000f 100644 --- a/OpenChange/MAPIStoreContext.m +++ b/OpenChange/MAPIStoreContext.m @@ -27,6 +27,7 @@ #import #import +#import #import #import @@ -558,6 +559,33 @@ static inline NSURL *CompleteURLFromMapistoreURI (const char *uri) return newVersionNumber; } +- (NSArray *) getNewChangeNumbers: (NSUInteger) max +{ + TALLOC_CTX *memCtx; + struct UI8Array_r *changeNumbers; + NSUInteger count; + NSMutableArray *newChangeNumbers; + NSString *newChangeNumber; + + memCtx = talloc_zero(NULL, TALLOC_CTX); + + if (openchangedb_get_new_changeNumbers (connInfo->oc_ctx, + memCtx, max, &changeNumbers) + != MAPI_E_SUCCESS || changeNumbers->cValues != max) + abort (); + + newChangeNumbers = [NSMutableArray arrayWithCapacity: max]; + for (count = 0; count < max; count++) + { + newChangeNumber = [NSString stringWithUnsignedLongLong: changeNumbers->lpui8[count]]; + [newChangeNumbers addObject: newChangeNumber]; + } + + talloc_free (memCtx); + + return newChangeNumbers; +} + /* subclasses */ + (NSString *) MAPIModuleName