Skip to content

Commit b1177fe

Browse files
committed
It compiles
1 parent 42da871 commit b1177fe

23 files changed

+176
-85
lines changed

Package.resolved

Lines changed: 29 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
// swift-tools-version:5.4
1+
// swift-tools-version:5.9
22

33
import PackageDescription
44

55
let package = Package(
66
name: "SocketIO",
7+
platforms: [
8+
.iOS(.v13),
9+
.macOS(.v10_15),
10+
.tvOS(.v13),
11+
.watchOS(.v6)
12+
],
713
products: [
814
.library(name: "SocketIO", targets: ["SocketIO"])
915
],
1016
dependencies: [
11-
.package(url: "https://github.com/daltoniam/Starscream", .upToNextMajor(from: "4.0.8")),
17+
.package(url: "https://github.com/theleftbit/Starscream.git", branch: "android"),
1218
],
1319
targets: [
1420
.target(name: "SocketIO", dependencies: ["Starscream"]),

Source/SocketIO/Ack/SocketAckEmitter.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public final class SocketAckEmitter: NSObject {
4141
/// ```
4242
///
4343
/// **NOTE**: It is not safe to hold on to this view beyond the life of the socket.
44-
@objc
4544
public private(set) lazy var rawEmitView = SocketRawAckView(socket: socket, ackNum: ackNum)
4645

4746
// MARK: Properties
@@ -83,7 +82,6 @@ public final class SocketAckEmitter: NSObject {
8382
/// Call to ack receiving this event.
8483
///
8584
/// - parameter items: An array of items to send when acking. Use `[]` to send nothing.
86-
@objc
8785
public func with(_ items: [Any]) {
8886
guard ackNum != -1 else { return }
8987

@@ -127,7 +125,6 @@ public final class OnAckCallback: NSObject {
127125
/// - parameter seconds: The number of seconds before this emit times out if an ack hasn't been received.
128126
/// - parameter callback: The callback called when an ack is received, or when a timeout happens.
129127
/// To check for timeout, use `SocketAckStatus`'s `noAck` case.
130-
@objc
131128
public func timingOut(after seconds: Double, callback: @escaping AckCallback) {
132129
guard let socket = self.socket, ackNumber != -1 else { return }
133130

Source/SocketIO/Client/SocketAnyEvent.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,9 @@ public final class SocketAnyEvent : NSObject {
2929
// MARK: Properties
3030

3131
/// The event name.
32-
@objc
3332
public let event: String
3433

3534
/// The data items for this event.
36-
@objc
3735
public let items: [Any]?
3836

3937
/// The description of this event.

Source/SocketIO/Client/SocketIOClient.swift

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
212212
/// - parameter event: The event to send.
213213
/// - parameter items: The items to send with this event. May be left out.
214214
/// - parameter completion: Callback called on transport write completion.
215-
open func emit(_ event: String, _ items: SocketData..., completion: (() -> ())? = nil) {
215+
open func emit(_ event: String, _ items: SocketData..., completion: (@Sendable() -> ())? = nil) {
216216
emit(event, with: items, completion: completion)
217217
}
218218

@@ -224,7 +224,7 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
224224
/// - parameter event: The event to send.
225225
/// - parameter items: The items to send with this event. May be left out.
226226
/// - parameter completion: Callback called on transport write completion.
227-
open func emit(_ event: String, with items: [SocketData], completion: (() -> ())?) {
227+
open func emit(_ event: String, with items: [SocketData], completion: (@Sendable () -> ())?) {
228228

229229
do {
230230
emit([event] + (try items.map({ try $0.socketRepresentation() })), completion: completion)
@@ -296,15 +296,21 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
296296
ack: Int? = nil,
297297
binary: Bool = true,
298298
isAck: Bool = false,
299-
completion: (() -> ())? = nil
299+
completion: (@Sendable () -> ())? = nil
300300
) {
301301
// wrap the completion handler so it always runs async via handlerQueue
302-
let wrappedCompletion: (() -> ())? = (completion == nil) ? nil : {[weak self] in
303-
guard let this = self else { return }
304-
this.manager?.handleQueue.async {
305-
completion!()
302+
let wrappedCompletion: (@Sendable () -> ())? = {
303+
if let completion {
304+
return completion
305+
} else {
306+
return { [weak self] in
307+
guard let this = self else { return }
308+
this.manager?.handleQueue.async {
309+
completion!()
310+
}
311+
}
306312
}
307-
}
313+
}()
308314

309315
guard status == .connected else {
310316
wrappedCompletion?()

Source/SocketIO/Client/SocketIOClientOption.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424

2525
import Foundation
2626
import Starscream
27+
#if os(Android)
28+
import FoundationNetworking
29+
#endif
2730

2831
/// The socket.io version being used.
2932
public enum SocketIOVersion: Int {

Source/SocketIO/Client/SocketIOClientSpec.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public protocol SocketIOClientSpec : AnyObject {
106106
/// - parameter event: The event to send.
107107
/// - parameter items: The items to send with this event. May be left out.
108108
/// - parameter completion: Callback called on transport write completion.
109-
func emit(_ event: String, _ items: SocketData..., completion: (() -> ())?)
109+
func emit(_ event: String, _ items: SocketData..., completion: (@Sendable () -> ())?)
110110

111111
/// Send an event to the server, with optional data items and optional write completion handler.
112112
///
@@ -116,7 +116,7 @@ public protocol SocketIOClientSpec : AnyObject {
116116
/// - parameter event: The event to send.
117117
/// - parameter items: The items to send with this event. May be left out.
118118
/// - parameter completion: Callback called on transport write completion.
119-
func emit(_ event: String, with items: [SocketData], completion: (() -> ())?)
119+
func emit(_ event: String, with items: [SocketData], completion: (@Sendable () -> ())?)
120120

121121
/// Call when you wish to tell the server that you've received the event for `ack`.
122122
///

Source/SocketIO/Client/SocketIOStatus.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import Foundation
2626

2727
/// Represents state of a manager or client.
28-
@objc
2928
public enum SocketIOStatus : Int, CustomStringConvertible {
3029
// MARK: Cases
3130

Source/SocketIO/Client/SocketRawView.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public final class SocketRawView : NSObject {
6060
///
6161
/// - parameter event: The event to send.
6262
/// - parameter items: The items to send with this event. Send an empty array to send no data.
63-
@objc
6463
public func emit(_ event: String, with items: [Any]) {
6564
socket.emit([event] + items, binary: false)
6665
}
@@ -113,7 +112,6 @@ public final class SocketRawView : NSObject {
113112
/// - parameter event: The event to send.
114113
/// - parameter items: The items to send with this event. Use `[]` to send nothing.
115114
/// - returns: An `OnAckCallback`. You must call the `timingOut(after:)` method before the event will be sent.
116-
@objc
117115
public func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback {
118116
return socket.createOnAck([event] + items, binary: false)
119117
}
@@ -154,7 +152,6 @@ public final class SocketRawAckView : NSObject {
154152
/// Call to ack receiving this event.
155153
///
156154
/// - parameter items: An array of items to send when acking. Use `[]` to send nothing.
157-
@objc
158155
public func with(_ items: [Any]) {
159156
guard ackNum != -1 else { return }
160157

Source/SocketIO/Engine/SocketEngine.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
import Dispatch
2626
import Foundation
2727
import Starscream
28+
#if os(Android)
29+
import FoundationNetworking
30+
#endif
2831

2932
/// The class that handles the engine.io protocol and transports.
3033
/// See `SocketEnginePollable` and `SocketEngineWebsocket` for transport specific methods.
@@ -563,7 +566,11 @@ open class SocketEngine: NSObject, WebSocketDelegate, URLSessionDelegate,
563566
polling = true
564567
probing = false
565568
invalidated = false
569+
#if os(Android)
570+
session = FoundationNetworking.URLSession(configuration: .default, delegate: sessionDelegate, delegateQueue: queue)
571+
#else
566572
session = Foundation.URLSession(configuration: .default, delegate: sessionDelegate, delegateQueue: queue)
573+
#endif
567574
sid = ""
568575
waitingForPoll = false
569576
waitingForPost = false
@@ -656,7 +663,7 @@ open class SocketEngine: NSObject, WebSocketDelegate, URLSessionDelegate,
656663
/// - parameter type: The type of this message.
657664
/// - parameter data: Any data that this message has.
658665
/// - parameter completion: Callback called on transport write completion.
659-
open func write(_ msg: String, withType type: SocketEnginePacketType, withData data: [Data], completion: (() -> ())? = nil) {
666+
open func write(_ msg: String, withType type: SocketEnginePacketType, withData data: [Data], completion: (@Sendable () -> ())? = nil) {
660667
engineQueue.async {
661668
guard self.connected else {
662669
completion?()

0 commit comments

Comments
 (0)