Monotone-Parent: 78c0405a3665172ccb21ec34bba08331cc479f71

Monotone-Revision: e70a6a4e35fcf0aacec5ec5ef392c0c8e6bb4e31

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2012-08-21T20:36:32
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2012-08-21 20:36:32 +00:00
parent 4f9e0f9963
commit e86f5ff841
3 changed files with 37 additions and 35 deletions

View File

@@ -261,6 +261,7 @@ static Class NSNumberK;
- (void) _setChangeKey: (NSData *) changeKey
forMessageEntry: (NSMutableDictionary *) messageEntry
inChangeListOnly: (BOOL) inChangeListOnly
{
struct XID *xid;
NSString *guid;
@@ -273,12 +274,15 @@ static Class NSNumberK;
globCnt = [NSData dataWithBytes: xid->Data length: xid->Size];
talloc_free (xid);
/* 1. set change key association */
changeKeyDict = [NSDictionary dictionaryWithObjectsAndKeys:
guid, @"GUID",
globCnt, @"LocalId",
nil];
[messageEntry setObject: changeKeyDict forKey: @"ChangeKey"];
if (!inChangeListOnly)
{
/* 1. set change key association */
changeKeyDict = [NSDictionary dictionaryWithObjectsAndKeys:
guid, @"GUID",
globCnt, @"LocalId",
nil];
[messageEntry setObject: changeKeyDict forKey: @"ChangeKey"];
}
/* 2. append/update predecessor change list */
changeList = [messageEntry objectForKey: @"PredecessorChangeList"];
@@ -286,11 +290,10 @@ static Class NSNumberK;
{
changeList = [NSMutableDictionary new];
[messageEntry setObject: changeList
forKey: @"PredecessorChangeList"];
forKey: @"PredecessorChangeList"];
[changeList release];
}
[changeList setObject: globCnt
forKey: guid];
[changeList setObject: globCnt forKey: guid];
}
- (EOQualifier *) componentQualifier
@@ -433,7 +436,8 @@ static Class NSNumberK;
[messageEntry setObject: changeNumber forKey: @"version"];
changeKey = [self getReplicaKeyFromGlobCnt: newChangeNum >> 16];
[self _setChangeKey: changeKey forMessageEntry: messageEntry];
[self _setChangeKey: changeKey forMessageEntry: messageEntry
inChangeListOnly: NO];
[mapping setObject: cLastModified forKey: changeNumber];
@@ -464,10 +468,21 @@ static Class NSNumberK;
- (void) updateVersionsForMessageWithKey: (NSString *) messageKey
withChangeKey: (NSData *) newChangeKey
{
[self synchroniseCache];
NSMutableDictionary *messages, *messageEntry;
[self synchroniseCache];
if (newChangeKey)
[self setChangeKey: newChangeKey forMessageWithKey: messageKey];
{
messages = [[versionsMessage properties] objectForKey: @"Messages"];
messageEntry = [messages objectForKey: messageKey];
if (!messageEntry)
[NSException raise: @"MAPIStoreIOException"
format: @"no version record found for message '%@'",
messageKey];
[self _setChangeKey: newChangeKey forMessageEntry: messageEntry
inChangeListOnly: YES];
[versionsMessage save];
}
}
- (NSNumber *) lastModifiedFromMessageChangeNumber: (NSNumber *) changeNum
@@ -493,26 +508,6 @@ static Class NSNumberK;
return changeNumber;
}
- (void) setChangeKey: (NSData *) changeKey
forMessageWithKey: (NSString *) messageKey
{
NSMutableDictionary *messages;
NSMutableDictionary *messageEntry;
messages = [[versionsMessage properties] objectForKey: @"Messages"];
messageEntry = [messages objectForKey: messageKey];
if (!messageEntry)
{
[self synchroniseCache];
messageEntry = [messages objectForKey: messageKey];
if (!messageEntry)
abort ();
}
[self _setChangeKey: changeKey forMessageEntry: messageEntry];
[versionsMessage save];
}
- (NSData *) changeKeyForMessageWithKey: (NSString *) messageKey
{
NSDictionary *messages, *changeKeyDict;