beautypg.com

Apple WebObjects 3.5 User Manual

Page 129

background image

State Storage Strategies

129

// WebScript StateStorage FileSessionStore.wos
@interface FileSessionStore:NSObject {

id archiveDirectory;

}
- init;
- archiveFileForSessionID:aSessionID;
- archiveForSessionID:aSessionID;
- restoreSession;
- saveSession:aSession;
@end

These methods have the following implementation:

@implementation FileSessionStore

- init {

self = [super init];
archiveDirectory = [WOApp pathForResourceNamed:@"SessionArchives"

ofType:nil];

return self;

}

- archiveFileForSessionID:aSessionID {

return [NSString stringWithFormat:@"%@/%@", archiveDirectory,

aSessionID];

}

- archiveForSessionID:aSessionID {

id archiveFile = [self archiveFileForSessionID:aSessionID];
return [NSData dataWithContentsOfFile:archiveFile];

}

- restoreSession {

id request = [[WOApp context] request];
id archivedSession;
id restoredSession;

// Allow requests in this session to go to any application instance.
[[WOApp context] setDistributionEnabled:YES];

// Get archived session (as an NSData object)
archivedSession = [self archiveForSessionID:[request sessionID]];