mirror of
https://github.com/samsonjs/arq_restore.git
synced 2026-03-25 09:25:53 +00:00
122 lines
4.7 KiB
Objective-C
122 lines
4.7 KiB
Objective-C
//
|
|
// TargetSchedule.m
|
|
// Arq
|
|
//
|
|
// Created by Stefan Reitshamer on 12/10/13.
|
|
// Copyright (c) 2013 Stefan Reitshamer. All rights reserved.
|
|
//
|
|
|
|
#import "TargetSchedule.h"
|
|
#import "DictNode.h"
|
|
#import "IntegerNode.h"
|
|
#import "IntegerIO.h"
|
|
#import "BufferedOutputStream.h"
|
|
#import "BooleanNode.h"
|
|
#import "BooleanIO.h"
|
|
|
|
|
|
#define TARGET_DATA_VERSION (1)
|
|
|
|
|
|
@implementation TargetSchedule
|
|
- (id)initWithScheduleType:(TargetScheduleType)theType
|
|
numberOfHours:(int)theNumberOfHours
|
|
minutesAfterHour:(int)theMinutesAfterHour
|
|
backupHour:(int)theBackupHour
|
|
budgetEnforcementIntervalHours:(int)theBudgetEnforcementIntervalHours
|
|
pauseDuringWindow:(BOOL)thePauseDuringWindow
|
|
pauseFromHour:(NSUInteger)thePauseFromHour
|
|
pauseToHour:(NSUInteger)thePauseToHour {
|
|
if (self = [super init]) {
|
|
type = theType;
|
|
numberOfHours = theNumberOfHours;
|
|
minutesAfterHour = theMinutesAfterHour;
|
|
backupHour = theBackupHour;
|
|
budgetEnforcementIntervalHours = theBudgetEnforcementIntervalHours;
|
|
pauseDuringWindow = thePauseDuringWindow;
|
|
pauseFromHour = (uint32_t)thePauseFromHour;
|
|
pauseToHour = (uint32_t)thePauseToHour;
|
|
}
|
|
return self;
|
|
}
|
|
- (id)initWithPlist:(DictNode *)thePlist {
|
|
if (self = [super init]) {
|
|
type = [[thePlist integerNodeForKey:@"type"] intValue];
|
|
numberOfHours = [[thePlist integerNodeForKey:@"numberOfHours"] intValue];
|
|
minutesAfterHour = [[thePlist integerNodeForKey:@"minutesAfterHour"] intValue];
|
|
backupHour = [[thePlist integerNodeForKey:@"backupHour"] intValue];
|
|
budgetEnforcementIntervalHours = [[thePlist integerNodeForKey:@"budgetEnforcementIntervalHours"] intValue];
|
|
pauseDuringWindow = [[thePlist booleanNodeForKey:@"pauseDuringWindow"] booleanValue];
|
|
pauseFromHour = [[thePlist integerNodeForKey:@"pauseFromHour"] intValue];
|
|
pauseToHour = [[thePlist integerNodeForKey:@"pauseToHour"] intValue];
|
|
}
|
|
return self;
|
|
}
|
|
- (id)initWithBufferedInputStream:(BufferedInputStream *)theBIS error:(NSError **)error {
|
|
if (self = [super init]) {
|
|
uint32_t version = 0;
|
|
if (![IntegerIO readUInt32:&version from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&type from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&numberOfHours from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&minutesAfterHour from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&backupHour from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&budgetEnforcementIntervalHours from:theBIS error:error]
|
|
|| ![BooleanIO read:&pauseDuringWindow from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&pauseFromHour from:theBIS error:error]
|
|
|| ![IntegerIO readUInt32:&pauseToHour from:theBIS error:error]) {
|
|
[self release];
|
|
return nil;
|
|
}
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (TargetScheduleType)type {
|
|
return type;
|
|
}
|
|
- (uint32_t)numberOfHours {
|
|
return numberOfHours;
|
|
}
|
|
- (uint32_t)minutesAfterHour {
|
|
return minutesAfterHour;
|
|
}
|
|
- (uint32_t)backupHour {
|
|
return backupHour;
|
|
}
|
|
- (uint32_t)budgetEnforcementIntervalHours {
|
|
return budgetEnforcementIntervalHours;
|
|
}
|
|
- (BOOL)pauseDuringWindow {
|
|
return pauseDuringWindow;
|
|
}
|
|
- (uint32_t)pauseFromHour {
|
|
return pauseFromHour;
|
|
}
|
|
- (uint32_t)pauseToHour {
|
|
return pauseToHour;
|
|
}
|
|
- (DictNode *)toPlist {
|
|
DictNode *ret = [[[DictNode alloc] init] autorelease];
|
|
[ret putInt:TARGET_DATA_VERSION forKey:@"dataVersion"];
|
|
[ret putInt:type forKey:@"type"];
|
|
[ret putInt:numberOfHours forKey:@"numberOfHours"];
|
|
[ret putInt:minutesAfterHour forKey:@"minutesAfterHour"];
|
|
[ret putInt:backupHour forKey:@"backupHour"];
|
|
[ret putInt:budgetEnforcementIntervalHours forKey:@"budgetEnforcementIntervalHours"];
|
|
[ret putBoolean:pauseDuringWindow forKey:@"pauseDuringWindow"];
|
|
[ret putInt:pauseFromHour forKey:@"pauseFromHour"];
|
|
[ret putInt:pauseToHour forKey:@"pauseToHour"];
|
|
return ret;
|
|
}
|
|
- (BOOL)writeTo:(BufferedOutputStream *)theBOS error:(NSError **)error {
|
|
return [IntegerIO writeUInt32:TARGET_DATA_VERSION to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:type to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:numberOfHours to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:minutesAfterHour to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:backupHour to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:budgetEnforcementIntervalHours to:theBOS error:error]
|
|
&& [BooleanIO write:pauseDuringWindow to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:pauseFromHour to:theBOS error:error]
|
|
&& [IntegerIO writeUInt32:pauseToHour to:theBOS error:error];
|
|
}
|
|
@end
|