fix socketio/socket.io-client-swift#133 can't expose variadics to objective-c
This commit is contained in:
parent
2579c04f67
commit
06e2311acc
@ -29,19 +29,34 @@ private func emitAckCallback(socket: SocketIOClient?, num: Int?)
|
|||||||
socket?.emitAck(num ?? -1, withData: items)
|
socket?.emitAck(num ?? -1, withData: items)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func emitAckCallbackObjectiveC(socket: SocketIOClient?, num: Int?)
|
||||||
|
(items: NSArray) -> Void {
|
||||||
|
socket?.emitAck(num ?? -1, withData: items as [AnyObject])
|
||||||
|
}
|
||||||
|
|
||||||
struct SocketEventHandler {
|
struct SocketEventHandler {
|
||||||
let event: String
|
let event: String
|
||||||
let callback: NormalCallback
|
let callback: NormalCallback?
|
||||||
|
let callBackObjectiveC: NormalCallbackObjectiveC?
|
||||||
|
|
||||||
init(event: String, callback: NormalCallback) {
|
init(event: String, callback: NormalCallback) {
|
||||||
self.event = event
|
self.event = event
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
|
self.callBackObjectiveC = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func executeCallback(items: NSArray? = nil, withAck ack: Int? = nil, withAckType type: Int? = nil,
|
init(event: String, callback: NormalCallbackObjectiveC) {
|
||||||
|
self.event = event
|
||||||
|
self.callback = nil
|
||||||
|
self.callBackObjectiveC = callback
|
||||||
|
}
|
||||||
|
|
||||||
|
func executeCallback(items: [AnyObject]? = nil, withAck ack: Int? = nil, withAckType type: Int? = nil,
|
||||||
withSocket socket: SocketIOClient? = nil) {
|
withSocket socket: SocketIOClient? = nil) {
|
||||||
dispatch_async(dispatch_get_main_queue()) {
|
dispatch_async(dispatch_get_main_queue()) {
|
||||||
self.callback(items, emitAckCallback(socket, num: ack))
|
self.callback != nil ?
|
||||||
|
self.callback?(items, emitAckCallback(socket, num: ack))
|
||||||
|
: self.callBackObjectiveC?(items, emitAckCallbackObjectiveC(socket, num: ack))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -426,6 +426,13 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
|||||||
let handler = SocketEventHandler(event: event, callback: callback)
|
let handler = SocketEventHandler(event: event, callback: callback)
|
||||||
handlers.append(handler)
|
handlers.append(handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func onObjectiveC(event: String, callback: NormalCallbackObjectiveC) {
|
||||||
|
SocketLogger.log("Adding handler for event: %@", client: self, args: event)
|
||||||
|
|
||||||
|
let handler = SocketEventHandler(event: event, callback: callback)
|
||||||
|
handlers.append(handler)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Removes all handlers.
|
Removes all handlers.
|
||||||
|
|||||||
@ -26,5 +26,7 @@ import Foundation
|
|||||||
|
|
||||||
public typealias AckCallback = (NSArray?) -> Void
|
public typealias AckCallback = (NSArray?) -> Void
|
||||||
public typealias AckEmitter = (AnyObject...) -> Void
|
public typealias AckEmitter = (AnyObject...) -> Void
|
||||||
|
public typealias AckEmitterObjectiveC = (NSArray) -> Void
|
||||||
public typealias NormalCallback = (NSArray?, AckEmitter?) -> Void
|
public typealias NormalCallback = (NSArray?, AckEmitter?) -> Void
|
||||||
|
public typealias NormalCallbackObjectiveC = (NSArray?, AckEmitterObjectiveC?) -> Void
|
||||||
public typealias OnAckCallback = (timeoutAfter: UInt64, callback: AckCallback) -> Void
|
public typealias OnAckCallback = (timeoutAfter: UInt64, callback: AckCallback) -> Void
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user