shuffle isReady->isSetup, centralize starting workStep

pull/1/head
Michael Kirk 7 years ago
parent c9d6ccc482
commit b8e4bfff86

@ -26,15 +26,7 @@ public class SessionResetJobQueue: NSObject, JobQueue {
defaultSetup() defaultSetup()
} }
public var isReady: Bool = false { public var isSetup: Bool = false
didSet {
if isReady {
DispatchQueue.global().async {
self.workStep()
}
}
}
}
public func didMarkAsReady(oldJobRecord: JobRecordType, transaction: YapDatabaseReadWriteTransaction) { public func didMarkAsReady(oldJobRecord: JobRecordType, transaction: YapDatabaseReadWriteTransaction) {
// no special handling // no special handling

@ -76,16 +76,7 @@ public class MessageSenderJobQueue: NSObject, JobQueue {
defaultSetup() defaultSetup()
} }
@objc public var isSetup: Bool = false
public var isReady: Bool = false {
didSet {
if isReady {
DispatchQueue.global().async {
self.workStep()
}
}
}
}
public func didMarkAsReady(oldJobRecord: SSKMessageSenderJobRecord, transaction: YapDatabaseReadWriteTransaction) { public func didMarkAsReady(oldJobRecord: SSKMessageSenderJobRecord, transaction: YapDatabaseReadWriteTransaction) {
if let messageId = oldJobRecord.messageId, let message = TSOutgoingMessage.fetch(uniqueId: messageId, transaction: transaction) { if let messageId = oldJobRecord.messageId, let message = TSOutgoingMessage.fetch(uniqueId: messageId, transaction: transaction) {

@ -69,7 +69,7 @@ public protocol JobQueue: DurableOperationDelegate {
var jobRecordLabel: String { get } var jobRecordLabel: String { get }
var isReady: Bool { get set } var isSetup: Bool { get set }
func setup() func setup()
func didMarkAsReady(oldJobRecord: JobRecordType, transaction: YapDatabaseReadWriteTransaction) func didMarkAsReady(oldJobRecord: JobRecordType, transaction: YapDatabaseReadWriteTransaction)
@ -105,12 +105,11 @@ public extension JobQueue {
func workStep() { func workStep() {
Logger.debug("") Logger.debug("")
guard isReady else { guard isSetup else {
if !CurrentAppContext().isRunningTests { if !CurrentAppContext().isRunningTests {
owsFailDebug("not ready") owsFailDebug("not setup")
} }
Logger.error("not ready")
return return
} }
@ -181,13 +180,17 @@ public extension JobQueue {
/// `setup` is called from objc, and default implementations from a protocol /// `setup` is called from objc, and default implementations from a protocol
/// cannot be marked as @objc. /// cannot be marked as @objc.
func defaultSetup() { func defaultSetup() {
guard !isReady else { guard !isSetup else {
owsFailDebug("already ready already") owsFailDebug("already ready already")
return return
} }
self.restartOldJobs() self.restartOldJobs()
self.isReady = true self.isSetup = true
DispatchQueue.global().async {
self.workStep()
}
} }
func remainingRetries(durableOperation: DurableOperationType) -> UInt { func remainingRetries(durableOperation: DurableOperationType) -> UInt {

@ -127,7 +127,7 @@ class MessageSenderJobQueueTest: SSKBaseTestSwift {
error.isRetryable = true error.isRetryable = true
self.messageSender.stubbedFailingError = error self.messageSender.stubbedFailingError = error
let expectation = sentExpectation(message: message) { let expectation = sentExpectation(message: message) {
jobQueue.isReady = false jobQueue.isSetup = false
} }
jobQueue.setup() jobQueue.setup()
@ -188,7 +188,7 @@ class MessageSenderJobQueueTest: SSKBaseTestSwift {
error.isRetryable = false error.isRetryable = false
self.messageSender.stubbedFailingError = error self.messageSender.stubbedFailingError = error
let expectation = sentExpectation(message: message) { let expectation = sentExpectation(message: message) {
jobQueue.isReady = false jobQueue.isSetup = false
} }
jobQueue.setup() jobQueue.setup()
self.wait(for: [expectation], timeout: 0.1) self.wait(for: [expectation], timeout: 0.1)

@ -47,13 +47,7 @@ class TestJobQueue: JobQueue {
// no special handling // no special handling
} }
var isReady: Bool = false { var isSetup: Bool = false
didSet {
DispatchQueue.global().async {
self.workStep()
}
}
}
let operationQueue = OperationQueue() let operationQueue = OperationQueue()
@ -161,8 +155,7 @@ class JobQueueTest: SSKBaseTestSwift {
} }
// Verify re-queue // Verify re-queue
jobQueue.isSetup = false
jobQueue.isReady = false
jobQueue.setup() jobQueue.setup()
self.readWrite { transaction in self.readWrite { transaction in
@ -181,7 +174,7 @@ class JobQueueTest: SSKBaseTestSwift {
rerunGroup.leave() rerunGroup.leave()
} }
jobQueue.isReady = true jobQueue.isSetup = true
switch rerunGroup.wait(timeout: .now() + 1.0) { switch rerunGroup.wait(timeout: .now() + 1.0) {
case .timedOut: case .timedOut:

Loading…
Cancel
Save