adapt 3 swift
This commit is contained in:
parent
7578c5c2e6
commit
0cc0c5332e
|
@ -3,7 +3,7 @@ import PackageDescription
|
|||
let package = Package(
|
||||
name: "ZeroMQ",
|
||||
dependencies: [
|
||||
.Package(url: "https://github.com/open-swift/C7.git", majorVersion: 0, minor: 7),
|
||||
.Package(url: "https://github.com/Zewo/CZeroMQ.git", majorVersion: 0, minor: 5),
|
||||
.Package(url: "https://github.com/Zewo/Core.git", majorVersion: 0, minor: 13),
|
||||
.Package(url: "https://github.com/Zewo/CZeroMQ.git", majorVersion: 1, minor: 0),
|
||||
]
|
||||
)
|
||||
|
|
|
@ -29,8 +29,8 @@ public func CURVEKeyPair() throws -> (publicKey: String, secretKey: String) {
|
|||
var secretKey = [Int8](repeating: 0, count: 41)
|
||||
|
||||
if zmq_curve_keypair(&publicKey, &secretKey) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return (String(validatingUTF8: publicKey)!, String(validatingUTF8: secretKey)!)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,18 +25,18 @@
|
|||
import CZeroMQ
|
||||
|
||||
public enum SocketType {
|
||||
case Req
|
||||
case Rep
|
||||
case Dealer
|
||||
case Router
|
||||
case Pub
|
||||
case Sub
|
||||
case XPub
|
||||
case XSub
|
||||
case Push
|
||||
case Pull
|
||||
case Pair
|
||||
case Stream
|
||||
case req
|
||||
case rep
|
||||
case dealer
|
||||
case router
|
||||
case pub
|
||||
case sub
|
||||
case xPub
|
||||
case xSub
|
||||
case push
|
||||
case pull
|
||||
case pair
|
||||
case stream
|
||||
// case Server
|
||||
// case Client
|
||||
}
|
||||
|
@ -44,18 +44,18 @@ public enum SocketType {
|
|||
extension SocketType {
|
||||
init?(rawValue: Int32) {
|
||||
switch rawValue {
|
||||
case ZMQ_REQ: self = Req
|
||||
case ZMQ_REP: self = Rep
|
||||
case ZMQ_DEALER: self = Dealer
|
||||
case ZMQ_ROUTER: self = Router
|
||||
case ZMQ_PUB: self = Pub
|
||||
case ZMQ_SUB: self = Sub
|
||||
case ZMQ_XPUB: self = XPub
|
||||
case ZMQ_XSUB: self = XSub
|
||||
case ZMQ_PUSH: self = Push
|
||||
case ZMQ_PULL: self = Pull
|
||||
case ZMQ_PAIR: self = Pair
|
||||
case ZMQ_STREAM: self = Stream
|
||||
case ZMQ_REQ: self = .req
|
||||
case ZMQ_REP: self = .rep
|
||||
case ZMQ_DEALER: self = .dealer
|
||||
case ZMQ_ROUTER: self = .router
|
||||
case ZMQ_PUB: self = .pub
|
||||
case ZMQ_SUB: self = .sub
|
||||
case ZMQ_XPUB: self = .xPub
|
||||
case ZMQ_XSUB: self = .xSub
|
||||
case ZMQ_PUSH: self = .push
|
||||
case ZMQ_PULL: self = .pull
|
||||
case ZMQ_PAIR: self = .pair
|
||||
case ZMQ_STREAM: self = .stream
|
||||
// case ZMQ_SERVER: self = Server
|
||||
// case ZMQ_CLIENT: self = Client
|
||||
|
||||
|
@ -67,18 +67,18 @@ extension SocketType {
|
|||
extension SocketType {
|
||||
var rawValue: Int32 {
|
||||
switch self {
|
||||
case .Req: return ZMQ_REQ
|
||||
case .Rep: return ZMQ_REP
|
||||
case .Dealer: return ZMQ_DEALER
|
||||
case .Router: return ZMQ_ROUTER
|
||||
case .Pub: return ZMQ_PUB
|
||||
case .Sub: return ZMQ_SUB
|
||||
case .XPub: return ZMQ_XPUB
|
||||
case .XSub: return ZMQ_XSUB
|
||||
case .Push: return ZMQ_PUSH
|
||||
case .Pull: return ZMQ_PULL
|
||||
case .Pair: return ZMQ_PAIR
|
||||
case .Stream: return ZMQ_STREAM
|
||||
case .req: return ZMQ_REQ
|
||||
case .rep: return ZMQ_REP
|
||||
case .dealer: return ZMQ_DEALER
|
||||
case .router: return ZMQ_ROUTER
|
||||
case .pub: return ZMQ_PUB
|
||||
case .sub: return ZMQ_SUB
|
||||
case .xPub: return ZMQ_XPUB
|
||||
case .xSub: return ZMQ_XSUB
|
||||
case .push: return ZMQ_PUSH
|
||||
case .pull: return ZMQ_PULL
|
||||
case .pair: return ZMQ_PAIR
|
||||
case .stream: return ZMQ_STREAM
|
||||
// case .Server: return ZMQ_SERVER
|
||||
// case .Client: return ZMQ_CLIENT
|
||||
}
|
||||
|
@ -86,13 +86,13 @@ extension SocketType {
|
|||
}
|
||||
|
||||
public final class Context {
|
||||
let context: UnsafeMutablePointer<Void>?
|
||||
let context: UnsafeMutableRawPointer?
|
||||
|
||||
public init() throws {
|
||||
context = zmq_ctx_new()
|
||||
|
||||
if context == nil {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,7 @@ public final class Context {
|
|||
context = zmq_ctx_new()
|
||||
|
||||
if context == nil {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
self.IOThreads = IOThreads
|
||||
|
@ -112,7 +112,7 @@ public final class Context {
|
|||
|
||||
public func terminate() throws {
|
||||
if zmq_ctx_term(context) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,7 +127,7 @@ public final class Context {
|
|||
public func socket(_ type: SocketType) throws -> Socket {
|
||||
|
||||
guard let socket = zmq_socket(context, type.rawValue) else {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return Socket(socket: socket)
|
||||
|
@ -182,4 +182,4 @@ extension Context {
|
|||
public func setThreadPriority(_ value: Int32) {
|
||||
setOption(ZMQ_THREAD_PRIORITY, value: value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,11 @@
|
|||
|
||||
import CZeroMQ
|
||||
|
||||
public struct Error : ErrorProtocol, CustomStringConvertible {
|
||||
public struct ZeroMqError : Error, CustomStringConvertible {
|
||||
public let description: String
|
||||
|
||||
static var lastError: Error {
|
||||
let description = String(validatingUTF8: zmq_strerror(zmq_errno()))!
|
||||
return Error(description: description)
|
||||
return ZeroMqError(description: description)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class Message {
|
|||
message = zmq_msg_t()
|
||||
|
||||
if zmq_msg_init(&message) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,23 +39,23 @@ public final class Message {
|
|||
message = zmq_msg_t()
|
||||
|
||||
if zmq_msg_init_size(&message, size) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public init(data: UnsafeMutablePointer<Void>, size: Int, hint: UnsafeMutablePointer<Void>? = nil, ffn: @convention(c) (UnsafeMutablePointer<Void>?, UnsafeMutablePointer<Void>?) -> Void) throws {
|
||||
public init(data: UnsafeMutableRawPointer, size: Int, hint: UnsafeMutableRawPointer? = nil, ffn: @escaping @convention(c) (UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Void) throws {
|
||||
message = zmq_msg_t()
|
||||
|
||||
if zmq_msg_init_data(&message, data, size, ffn, hint) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public init(data: UnsafeMutablePointer<Void>, size: Int) throws {
|
||||
public init(data: UnsafeMutableRawPointer, size: Int) throws {
|
||||
message = zmq_msg_t()
|
||||
|
||||
if zmq_msg_init_data(&message, data, size, nil, nil) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ public final class Message {
|
|||
|
||||
public func getProperty(_ property: String) throws -> String {
|
||||
guard let result = zmq_msg_gets(&message, property) else {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return String(validatingUTF8: result)!
|
||||
|
@ -81,11 +81,11 @@ public final class Message {
|
|||
|
||||
public func close() throws {
|
||||
if zmq_msg_close(&message) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public var data: UnsafeMutablePointer<Void> {
|
||||
public var data: UnsafeMutableRawPointer {
|
||||
return zmq_msg_data(&message)
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ public final class Message {
|
|||
let message = try Message()
|
||||
|
||||
if zmq_msg_copy(&message.message, &self.message) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return message
|
||||
|
@ -111,7 +111,7 @@ public final class Message {
|
|||
let message = try Message()
|
||||
|
||||
if zmq_msg_move(&message.message, &self.message) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -124,4 +124,4 @@ extension Message {
|
|||
public var shared: Bool {
|
||||
return getProperty(ZMQ_SHARED) != 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,26 +38,26 @@ public struct PollEvent : OptionSet {
|
|||
}
|
||||
|
||||
public enum PollItemEvent {
|
||||
case Socket(socket: UnsafeMutablePointer<Void>, events: PollEvent)
|
||||
case FileDescriptor(fileDescriptor: Int32, events: PollEvent)
|
||||
case socket(socket: UnsafeMutableRawPointer, events: PollEvent)
|
||||
case fileDescriptor(fileDescriptor: Int32, events: PollEvent)
|
||||
|
||||
var pollItem: zmq_pollitem_t {
|
||||
switch self {
|
||||
case Socket(let socket, let events):
|
||||
case .socket(let socket, let events):
|
||||
return zmq_pollitem_t(socket: socket, fd: 0, events: events.rawValue, revents: 0)
|
||||
case FileDescriptor(let fileDescriptor, let events):
|
||||
case .fileDescriptor(let fileDescriptor, let events):
|
||||
return zmq_pollitem_t(socket: nil, fd: fileDescriptor, events: events.rawValue, revents: 0)
|
||||
}
|
||||
}
|
||||
|
||||
init(pollItem: zmq_pollitem_t) {
|
||||
if pollItem.socket != nil {
|
||||
self = Socket(
|
||||
self = .socket(
|
||||
socket: pollItem.socket,
|
||||
events: PollEvent(rawValue: pollItem.revents)
|
||||
)
|
||||
} else {
|
||||
self = FileDescriptor(
|
||||
self = .fileDescriptor(
|
||||
fileDescriptor: pollItem.fd,
|
||||
events: PollEvent(rawValue: pollItem.revents)
|
||||
)
|
||||
|
@ -69,8 +69,8 @@ public func poll(_ items: PollItemEvent..., timeout: Int) throws -> [PollItemEve
|
|||
var pollItems = items.map { $0.pollItem }
|
||||
|
||||
if zmq_poll(&pollItems, Int32(pollItems.count), timeout) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return pollItems.map(PollItemEvent.init)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,6 @@
|
|||
|
||||
import CZeroMQ
|
||||
|
||||
public func proxy(frontend: Socket, backend: Socket, capture: Socket? = nil) {
|
||||
public func proxy(_ frontend: Socket, backend: Socket, capture: Socket? = nil) {
|
||||
zmq_proxy(frontend.socket, backend.socket, capture?.socket ?? nil)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
// SOFTWARE.
|
||||
|
||||
import CZeroMQ
|
||||
import C7
|
||||
import Core
|
||||
|
||||
public struct SendMode : OptionSet {
|
||||
public let rawValue: Int
|
||||
|
@ -47,9 +47,9 @@ public struct ReceiveMode : OptionSet {
|
|||
}
|
||||
|
||||
public final class Socket {
|
||||
let socket: UnsafeMutablePointer<Void>
|
||||
let socket: UnsafeMutableRawPointer
|
||||
|
||||
init(socket: UnsafeMutablePointer<Void>) {
|
||||
init(socket: UnsafeMutableRawPointer) {
|
||||
self.socket = socket
|
||||
}
|
||||
|
||||
|
@ -57,27 +57,27 @@ public final class Socket {
|
|||
zmq_close(socket)
|
||||
}
|
||||
|
||||
func setOption(_ option: Int32, value: UnsafePointer<Void>?, length: Int) throws {
|
||||
func setOption(_ option: Int32, value: UnsafeRawPointer?, length: Int) throws {
|
||||
if zmq_setsockopt(socket, option, value, length) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
func getOption(_ option: Int32, value: UnsafeMutablePointer<Void>, length: UnsafeMutablePointer<Int>) throws {
|
||||
func getOption(_ option: Int32, value: UnsafeMutableRawPointer, length: UnsafeMutablePointer<Int>) throws {
|
||||
if zmq_getsockopt(socket, option, value, length) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public func bind(_ endpoint: String) throws {
|
||||
if zmq_bind(socket, endpoint) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public func connect(_ endpoint: String) throws {
|
||||
if zmq_connect(socket, endpoint) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,13 +89,13 @@ public final class Socket {
|
|||
}
|
||||
|
||||
if result == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func send(_ buffer: UnsafeMutablePointer<Void>, length: Int, mode: SendMode = []) throws -> Bool {
|
||||
func send(_ buffer: UnsafeMutableRawPointer, length: Int, mode: SendMode = []) throws -> Bool {
|
||||
let result = zmq_send(socket, buffer, length, Int32(mode.rawValue))
|
||||
|
||||
if result == -1 && zmq_errno() == EAGAIN {
|
||||
|
@ -103,17 +103,19 @@ public final class Socket {
|
|||
}
|
||||
|
||||
if result == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
public func send(_ data: Data, mode: SendMode = []) throws -> Bool {
|
||||
var data = data
|
||||
return try self.send(&data.bytes, length: data.count, mode: mode)
|
||||
return try data.withUnsafeMutableBytes { bytes in
|
||||
return try self.send(bytes, length: data.count, mode: mode)
|
||||
}
|
||||
}
|
||||
|
||||
func sendImmutable(_ buffer: UnsafePointer<Void>, length: Int, mode: SendMode = []) throws -> Bool {
|
||||
func sendImmutable(_ buffer: UnsafeRawPointer, length: Int, mode: SendMode = []) throws -> Bool {
|
||||
let result = zmq_send_const(socket, buffer, length, Int32(mode.rawValue))
|
||||
|
||||
if result == -1 && zmq_errno() == EAGAIN {
|
||||
|
@ -121,7 +123,7 @@ public final class Socket {
|
|||
}
|
||||
|
||||
if result == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return true
|
||||
|
@ -136,21 +138,23 @@ public final class Socket {
|
|||
}
|
||||
|
||||
if result == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
|
||||
return message
|
||||
}
|
||||
|
||||
public func receive(_ bufferSize: Int = 1024, mode: ReceiveMode = []) throws -> Data? {
|
||||
var data = Data.buffer(with: bufferSize)
|
||||
let result = zmq_recv(socket, &data.bytes, bufferSize, Int32(mode.rawValue))
|
||||
var data = Data(count: bufferSize)
|
||||
let result = data.withUnsafeMutableBytes { bytes in
|
||||
return zmq_recv(socket, bytes, bufferSize, Int32(mode.rawValue))
|
||||
}
|
||||
if result == -1 && zmq_errno() == EAGAIN {
|
||||
return nil
|
||||
}
|
||||
|
||||
if result == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
let bufferEnd = min(Int(result), bufferSize)
|
||||
return Data(data[0 ..< bufferEnd])
|
||||
|
@ -158,13 +162,13 @@ public final class Socket {
|
|||
|
||||
public func close() throws {
|
||||
if zmq_close(socket) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
|
||||
public func monitor(_ endpoint: String, events: SocketEvent) throws {
|
||||
if zmq_socket_monitor(socket, endpoint, events.rawValue) == -1 {
|
||||
throw Error.lastError
|
||||
throw ZeroMqError.lastError
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -193,11 +197,11 @@ public struct SocketEvent : OptionSet {
|
|||
extension Socket {
|
||||
func setOption(_ option: Int32, _ value: Bool) throws {
|
||||
var value = value ? 1 : 0
|
||||
try setOption(option, value: &value, length: strideof(Int32))
|
||||
try setOption(option, value: &value, length: strideof(Int32.self))
|
||||
}
|
||||
func setOption(_ option: Int32, _ value: Int32) throws {
|
||||
var value = value
|
||||
try setOption(option, value: &value, length: strideof(Int32))
|
||||
try setOption(option, value: &value, length: strideof(Int32.self))
|
||||
}
|
||||
func setOption(_ option: Int32, _ value: String) throws {
|
||||
try value.withCString { v in
|
||||
|
@ -205,7 +209,9 @@ extension Socket {
|
|||
}
|
||||
}
|
||||
func setOption(_ option: Int32, _ value: Data) throws {
|
||||
try setOption(option, value: value.bytes, length: value.count)
|
||||
try value.withUnsafeBytes { bytes in
|
||||
try setOption(option, value: bytes, length: value.count)
|
||||
}
|
||||
}
|
||||
func setOption(_ option: Int32, _ value: String?) throws {
|
||||
if let value = value {
|
||||
|
@ -221,7 +227,7 @@ extension Socket {
|
|||
extension Socket {
|
||||
public func setAffinity(_ value: UInt64) throws {
|
||||
var value = value
|
||||
try setOption(ZMQ_AFFINITY, value: &value, length: strideof(UInt64))
|
||||
try setOption(ZMQ_AFFINITY, value: &value, length: strideof(UInt64.self))
|
||||
}
|
||||
|
||||
public func setBacklog(_ value: Int32) throws {
|
||||
|
@ -310,7 +316,7 @@ extension Socket {
|
|||
|
||||
public func setMaxMessageSize(_ value: Int64) throws {
|
||||
var value = value
|
||||
try setOption(ZMQ_MAXMSGSIZE, value: &value, length: strideof(Int64))
|
||||
try setOption(ZMQ_MAXMSGSIZE, value: &value, length: strideof(Int64.self))
|
||||
}
|
||||
|
||||
public func setMulticastHops(_ value: Int32) throws {
|
||||
|
@ -457,7 +463,7 @@ extension Socket {
|
|||
extension Socket {
|
||||
func getOption(_ option: Int32) throws -> Int32 {
|
||||
var value: Int32 = 0
|
||||
var length = strideof(Int32)
|
||||
var length = strideof(Int32.self)
|
||||
try getOption(option, value: &value, length: &length)
|
||||
return value
|
||||
}
|
||||
|
@ -476,7 +482,7 @@ extension Socket {
|
|||
extension Socket {
|
||||
public func getAffinity() throws -> UInt64 {
|
||||
var value: UInt64 = 0
|
||||
var length = strideof(UInt64)
|
||||
var length = strideof(UInt64.self)
|
||||
try getOption(ZMQ_AFFINITY, value: &value, length: &length)
|
||||
return value
|
||||
}
|
||||
|
@ -560,7 +566,7 @@ extension Socket {
|
|||
|
||||
public func getMaxMessageSize() throws -> Int64 {
|
||||
var value: Int64 = 0
|
||||
var length = strideof(Int64)
|
||||
var length = strideof(Int64.self)
|
||||
try getOption(ZMQ_MAXMSGSIZE, value: &value, length: &length)
|
||||
return value
|
||||
}
|
||||
|
@ -672,17 +678,17 @@ extension Socket {
|
|||
}
|
||||
|
||||
public enum SecurityMechanism {
|
||||
case Null
|
||||
case Plain
|
||||
case CURVE
|
||||
case null
|
||||
case plain
|
||||
case curve
|
||||
}
|
||||
|
||||
extension SecurityMechanism {
|
||||
init?(rawValue: Int32) {
|
||||
switch rawValue {
|
||||
case ZMQ_NULL: self = Null
|
||||
case ZMQ_PLAIN: self = Plain
|
||||
case ZMQ_CURVE: self = CURVE
|
||||
case ZMQ_NULL: self = .null
|
||||
case ZMQ_PLAIN: self = .plain
|
||||
case ZMQ_CURVE: self = .curve
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
|
@ -699,4 +705,4 @@ extension Socket {
|
|||
}
|
||||
return try? String(data: buffer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ class ZeroMQTests: XCTestCase {
|
|||
try outbound.sendString("Hello World!")
|
||||
try outbound.sendString("Bye!")
|
||||
|
||||
while let data = try inbound.receiveString() where data != "Bye!" {
|
||||
while let data = try inbound.receiveString() , data != "Bye!" {
|
||||
called = true
|
||||
XCTAssert(data == "Hello World!")
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ class ZeroMQTests: XCTestCase {
|
|||
}
|
||||
|
||||
extension ZeroMQTests {
|
||||
static var allTests: [(String, ZeroMQTests -> () throws -> Void)] {
|
||||
static var allTests: [(String, (ZeroMQTests) -> () throws -> Void)] {
|
||||
return [
|
||||
("testPushPull", testPushPull),
|
||||
]
|
Loading…
Reference in New Issue