11
11
//===----------------------------------------------------------------------===//
12
12
13
13
import CDispatch
14
+ #if os(Windows)
15
+ import WinSDK
16
+ #endif
14
17
15
18
extension DispatchIO {
16
19
@@ -34,12 +37,28 @@ extension DispatchIO {
34
37
public static let strictInterval = IntervalFlags ( rawValue: 1 )
35
38
}
36
39
40
+ #if os(Windows)
41
+ public class func read( fromHandle: HANDLE , maxLength: Int , runningHandlerOn queue: DispatchQueue , handler: @escaping ( _ data: DispatchData , _ error: Int32 ) -> Void ) {
42
+ dispatch_read ( dispatch_fd_t ( bitPattern: fromHandle) , maxLength, queue. __wrapped) { ( data: dispatch_data_t , error: Int32 ) in
43
+ handler ( DispatchData ( borrowedData: data) , error)
44
+ }
45
+ }
46
+ #endif
47
+
37
48
public class func read( fromFileDescriptor: Int32 , maxLength: Int , runningHandlerOn queue: DispatchQueue , handler: @escaping ( _ data: DispatchData , _ error: Int32 ) -> Void ) {
38
49
dispatch_read ( dispatch_fd_t ( fromFileDescriptor) , maxLength, queue. __wrapped) { ( data: dispatch_data_t , error: Int32 ) in
39
50
handler ( DispatchData ( borrowedData: data) , error)
40
51
}
41
52
}
42
53
54
+ #if os(Windows)
55
+ public class func write( toHandle: HANDLE , data: DispatchData , runningHandlerOn queue: DispatchQueue , handler: @escaping ( _ data: DispatchData ? ? , _ error: Int32 ) -> Void ) {
56
+ dispatch_write ( dispatch_fd_t ( bitPattern: toHandle) , data. __wrapped. __wrapped, queue. __wrapped) { ( data: dispatch_data_t ? , error: Int32 ) in
57
+ handler ( data. map { DispatchData ( borrowedData: $0) } , error)
58
+ }
59
+ }
60
+ #endif
61
+
43
62
public class func write( toFileDescriptor: Int32 , data: DispatchData , runningHandlerOn queue: DispatchQueue , handler: @escaping ( _ data: DispatchData ? , _ error: Int32 ) -> Void ) {
44
63
dispatch_write ( dispatch_fd_t ( toFileDescriptor) , data. __wrapped. __wrapped, queue. __wrapped) { ( data: dispatch_data_t ? , error: Int32 ) in
45
64
handler ( data. map { DispatchData ( borrowedData: $0) } , error)
0 commit comments