Skip to content

Commit 3c3a4bb

Browse files
committed
Use Swift2 defer.
1 parent 5c603dd commit 3c3a4bb

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

SwiftTask/_StateMachine.swift

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,62 +46,64 @@ internal class _StateMachine<Progress, Value, Error>
4646
internal func addProgressTupleHandler(inout token: _HandlerToken?, _ progressTupleHandler: ProgressTupleHandler) -> Bool
4747
{
4848
self._lock.lock()
49+
defer { self._lock.unlock() }
50+
4951
if self.state.rawValue == .Running || self.state.rawValue == .Paused {
5052
token = self._progressTupleHandlers.append(progressTupleHandler)
51-
self._lock.unlock()
5253
return token != nil
5354
}
5455
else {
55-
self._lock.unlock()
5656
return false
5757
}
5858
}
5959

6060
internal func removeProgressTupleHandler(handlerToken: _HandlerToken?) -> Bool
6161
{
6262
self._lock.lock()
63+
defer { self._lock.unlock() }
64+
6365
if let handlerToken = handlerToken {
6466
let removedHandler = self._progressTupleHandlers.remove(handlerToken)
65-
self._lock.unlock()
6667
return removedHandler != nil
6768
}
6869
else {
69-
self._lock.unlock()
7070
return false
7171
}
7272
}
7373

7474
internal func addCompletionHandler(inout token: _HandlerToken?, _ completionHandler: Void -> Void) -> Bool
7575
{
7676
self._lock.lock()
77+
defer { self._lock.unlock() }
78+
7779
if self.state.rawValue == .Running || self.state.rawValue == .Paused {
7880
token = self._completionHandlers.append(completionHandler)
79-
self._lock.unlock()
8081
return token != nil
8182
}
8283
else {
83-
self._lock.unlock()
8484
return false
8585
}
8686
}
8787

8888
internal func removeCompletionHandler(handlerToken: _HandlerToken?) -> Bool
8989
{
9090
self._lock.lock()
91+
defer { self._lock.unlock() }
92+
9193
if let handlerToken = handlerToken {
9294
let removedHandler = self._completionHandlers.remove(handlerToken)
93-
self._lock.unlock()
9495
return removedHandler != nil
9596
}
9697
else {
97-
self._lock.unlock()
9898
return false
9999
}
100100
}
101101

102102
internal func handleProgress(progress: Progress)
103103
{
104104
self._lock.lock()
105+
defer { self._lock.unlock() }
106+
105107
if self.state.rawValue == .Running {
106108

107109
let oldProgress = self.progress.rawValue
@@ -114,60 +116,53 @@ internal class _StateMachine<Progress, Value, Error>
114116
for handler in self._progressTupleHandlers {
115117
handler(oldProgress: oldProgress, newProgress: progress)
116118
}
117-
self._lock.unlock()
118-
}
119-
else {
120-
self._lock.unlock()
121119
}
122120
}
123121

124122
internal func handleFulfill(value: Value)
125123
{
126124
self._lock.lock()
125+
defer { self._lock.unlock() }
126+
127127
let (_, updated) = self.state.tryUpdate { $0 == .Running ? (.Fulfilled, true) : ($0, false) }
128128
if updated {
129129
self.value.rawValue = value
130130
self._finish()
131-
self._lock.unlock()
132-
}
133-
else {
134-
self._lock.unlock()
135131
}
136132
}
137133

138134
internal func handleRejectInfo(errorInfo: ErrorInfo)
139135
{
140136
self._lock.lock()
137+
defer { self._lock.unlock() }
138+
141139
let toState = errorInfo.isCancelled ? TaskState.Cancelled : .Rejected
142140
let (_, updated) = self.state.tryUpdate { $0 == .Running || $0 == .Paused ? (toState, true) : ($0, false) }
143141
if updated {
144142
self.errorInfo.rawValue = errorInfo
145143
self._finish()
146-
self._lock.unlock()
147-
}
148-
else {
149-
self._lock.unlock()
150144
}
151145
}
152146

153147
internal func handlePause() -> Bool
154148
{
155149
self._lock.lock()
150+
defer { self._lock.unlock() }
151+
156152
let (_, updated) = self.state.tryUpdate { $0 == .Running ? (.Paused, true) : ($0, false) }
157153
if updated {
158154
self.configuration.pause?()
159-
self._lock.unlock()
160155
return true
161156
}
162157
else {
163-
self._lock.unlock()
164158
return false
165159
}
166160
}
167161

168162
internal func handleResume() -> Bool
169163
{
170164
self._lock.lock()
165+
171166
if let initResumeClosure = self.initResumeClosure.update({ _ in nil }) {
172167

173168
self.state.rawValue = .Running
@@ -211,15 +206,15 @@ internal class _StateMachine<Progress, Value, Error>
211206
internal func handleCancel(error: Error? = nil) -> Bool
212207
{
213208
self._lock.lock()
209+
defer { self._lock.unlock() }
210+
214211
let (_, updated) = self.state.tryUpdate { $0 == .Running || $0 == .Paused ? (.Cancelled, true) : ($0, false) }
215212
if updated {
216213
self.errorInfo.rawValue = ErrorInfo(error: error, isCancelled: true)
217214
self._finish()
218-
self._lock.unlock()
219215
return true
220216
}
221217
else {
222-
self._lock.unlock()
223218
return false
224219
}
225220
}

0 commit comments

Comments
 (0)