@@ -21,7 +21,11 @@ import Dispatch
21
21
22
22
// FIXME: Change to a struct when using a swift binary that supports the DispatchQueue type
23
23
public class ObjectStorageConn {
24
- let connectQueue = dispatch_queue_create ( " connectQueue " , nil )
24
+ #if os(OSX)
25
+ let connectQueue = DispatchQueue ( label: " connectQueue " )
26
+ #else
27
+ let connectQueue = dispatch_queue_create ( " connectQueue " , nil )
28
+ #endif
25
29
let objStorage : ObjectStorage
26
30
var test = 10
27
31
let connProps : ObjectStorageConnProps
@@ -36,15 +40,14 @@ public class ObjectStorageConn {
36
40
func getObjectStorage( completionHandler: ( objStorage: ObjectStorage ? ) -> Void ) {
37
41
Log . verbose ( " Starting task in serialized block (getting ObjectStorage instance)... " )
38
42
#if os(OSX)
39
- guard let connectQueue = self . connectQueue else {
40
- Log . warning ( " Connect queue was not created properly " )
41
- completionHandler ( objStorage: nil )
42
- return
43
+ connectQueue. sync {
44
+ self . connect ( completionHandler: completionHandler)
45
+ }
46
+ #else
47
+ dispatch_sync ( connectQueue) {
48
+ self . connect ( completionHandler: completionHandler)
43
49
}
44
50
#endif
45
- dispatch_sync ( connectQueue) {
46
- self . connect ( completionHandler: completionHandler)
47
- }
48
51
Log . verbose ( " Completed task in serialized block. " )
49
52
let param : ObjectStorage ? = ( authenticated) ? objStorage : nil
50
53
completionHandler ( objStorage: param)
@@ -58,7 +61,7 @@ public class ObjectStorageConn {
58
61
// This logic is just a stopgap solution to avoid requesting a new
59
62
// authToken for every ObjectStorage request.
60
63
// The ObjectStorage SDK will contain logic for handling expired authToken
61
- let timeDiff : NSTimeInterval = lastAuthenticatedTs. timeIntervalSinceNow
64
+ let timeDiff = lastAuthenticatedTs. timeIntervalSinceNow
62
65
let minsDiff = Int ( fabs ( timeDiff / 60 ) )
63
66
if minsDiff < 50 {
64
67
Log . verbose ( " Reusing existing Object Storage auth token... " )
@@ -68,11 +71,7 @@ public class ObjectStorageConn {
68
71
69
72
// Network call should be synchronous since we need to know the result before proceeding.
70
73
#if os(OSX)
71
- guard let semaphore = dispatch_semaphore_create ( 0 ) else {
72
- Log . warning ( " Couldn't create semaphore... " )
73
- completionHandler ( objStorage: nil )
74
- return
75
- }
74
+ let semaphore = DispatchSemaphore ( value: 0 )
76
75
#else
77
76
let semaphore = dispatch_semaphore_create ( 0 )
78
77
#endif
@@ -90,9 +89,17 @@ public class ObjectStorageConn {
90
89
Log . verbose ( " lastAuthenticatedTs is \( self . lastAuthenticatedTs) . " )
91
90
}
92
91
Log . verbose ( " Signaling semaphore... " )
93
- dispatch_semaphore_signal ( semaphore)
92
+ #if os(OSX)
93
+ semaphore. signal ( )
94
+ #else
95
+ dispatch_semaphore_signal ( semaphore)
96
+ #endif
94
97
}
95
- dispatch_semaphore_wait ( semaphore, DISPATCH_TIME_FOREVER)
98
+ #if os(OSX)
99
+ let _ = semaphore. wait ( timeout: DispatchTime . distantFuture)
100
+ #else
101
+ dispatch_semaphore_wait ( semaphore, DISPATCH_TIME_FOREVER)
102
+ #endif
96
103
Log . verbose ( " Continuing execution after synchronous network call... " )
97
104
}
98
105
0 commit comments