no message

This commit is contained in:
Peter 2015-07-29 18:03:41 +03:00
parent 38272e9c36
commit 66c107f0c3
3 changed files with 48 additions and 0 deletions

View File

@ -731,6 +731,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
};
name = Release;
};
@ -791,6 +792,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
@ -836,6 +838,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 1;
ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;

View File

@ -60,6 +60,36 @@ public func restart<T, E>(signal: Signal<T, E>) -> Signal<T, E> {
}
}
public func recurse<T, E>(latestValue: T?)(signal: Signal<T, E>) -> Signal<T, E> {
return Signal { subscriber in
let shouldRestart = Atomic(value: true)
let currentDisposable = MetaDisposable()
let start = recursiveFunction { recurse in
let currentShouldRestart = shouldRestart.with { value in
return value
}
if currentShouldRestart {
let disposable = signal.start(next: { next in
subscriber.putNext(next)
}, error: { error in
subscriber.putError(error)
}, completed: {
recurse()
})
currentDisposable.set(disposable)
}
}
start()
return ActionDisposable {
currentDisposable.dispose()
shouldRestart.swap(false)
}
}
}
public func retry<T, E>(exponentialDecay: Double, onQueue queue: Queue)(signal: Signal<T, E>) -> Signal<T, E> {
return Signal { subscriber in
let shouldRetry = Atomic(value: true)

View File

@ -75,3 +75,18 @@ public func runOn<T, E>(threadPool: ThreadPool)(signal: Signal<T, E>) -> Signal<
return disposable
}
}
public func bufferOn<T, E>(queue: Queue, timeout: Double)(signal: Signal<T, E>) -> Signal<[T], E> {
return Signal { subscriber in
let timer = Timer(timeout: timeout, `repeat`: false, completion: {
}, queue: queue)
return signal.start(next: { next in
}, error: { error in
subscriber.putError(error)
}, completed: {
})
}
}