swift3 and c lib
This commit is contained in:
parent
df4a2b26a6
commit
2d7340b24d
|
@ -2,8 +2,8 @@ import PackageDescription
|
||||||
|
|
||||||
let package = Package(
|
let package = Package(
|
||||||
name: "SwiftZMQ",
|
name: "SwiftZMQ",
|
||||||
|
targets: [Target(name: "swiftzmq", dependencies: ["CLibzmq"])],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.Package(url: "https://github.com/Zewo/CZeroMQ.git", majorVersion: 1),
|
|
||||||
.Package(url: "https://github.com/Zewo/Data.git", majorVersion: 0, minor: 2)
|
.Package(url: "https://github.com/Zewo/Data.git", majorVersion: 0, minor: 2)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
module CLibzmq {
|
||||||
|
header "/usr/local/include/zmq.h"
|
||||||
|
link "zmq"
|
||||||
|
export *
|
||||||
|
}
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
|
||||||
<string>en</string>
|
|
||||||
<key>CFBundleExecutable</key>
|
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
|
||||||
<string>6.0</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>$(PRODUCT_NAME)</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>FMWK</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>1.0</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>????</string>
|
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
|
||||||
<key>NSHumanReadableCopyright</key>
|
|
||||||
<string>Copyright © 2015 Zewo. All rights reserved.</string>
|
|
||||||
<key>NSPrincipalClass</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -22,15 +22,15 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
public func CURVEKeyPair() throws -> (publicKey: String, secretKey: String) {
|
public func CURVEKeyPair() throws -> (publicKey: String, secretKey: String) {
|
||||||
var publicKey = [Int8](count: 41, repeatedValue: 0)
|
var publicKey = [Int8](repeating: 0, count: 41)
|
||||||
var secretKey = [Int8](count: 41, repeatedValue: 0)
|
var secretKey = [Int8](repeating: 0, count: 41)
|
||||||
|
|
||||||
if zmq_curve_keypair(&publicKey, &secretKey) == -1 {
|
if zmq_curve_keypair(&publicKey, &secretKey) == -1 {
|
||||||
throw Error.lastError
|
throw Error.lastError
|
||||||
}
|
}
|
||||||
|
|
||||||
return (String.fromCString(publicKey)!, String.fromCString(secretKey)!)
|
return (String(validatingUTF8: publicKey)!, String(validatingUTF8: secretKey)!)
|
||||||
}
|
}
|
|
@ -22,7 +22,7 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
public enum SocketType {
|
public enum SocketType {
|
||||||
case Req
|
case Req
|
|
@ -22,13 +22,13 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
public struct Error : ErrorType, CustomStringConvertible {
|
public struct Error : ErrorProtocol, CustomStringConvertible {
|
||||||
public let description: String
|
public let description: String
|
||||||
|
|
||||||
static var lastError: Error {
|
static var lastError: Error {
|
||||||
let description = String.fromCString(zmq_strerror(zmq_errno()))!
|
let description = String(validatingUTF8: zmq_strerror(zmq_errno()))!
|
||||||
return Error(description: description)
|
return Error(description: description)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -22,7 +22,7 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
public final class Message {
|
public final class Message {
|
||||||
var message: zmq_msg_t
|
var message: zmq_msg_t
|
||||||
|
@ -78,7 +78,7 @@ public final class Message {
|
||||||
throw Error.lastError
|
throw Error.lastError
|
||||||
}
|
}
|
||||||
|
|
||||||
return String.fromCString(result)!
|
return String(validatingUTF8: result)!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func close() throws {
|
public func close() throws {
|
||||||
|
@ -109,7 +109,7 @@ public final class Message {
|
||||||
return message
|
return message
|
||||||
}
|
}
|
||||||
|
|
||||||
public func move(inout message: Message) throws {
|
public func move(message: inout Message) throws {
|
||||||
let message = try Message()
|
let message = try Message()
|
||||||
|
|
||||||
if zmq_msg_move(&message.message, &self.message) == -1 {
|
if zmq_msg_move(&message.message, &self.message) == -1 {
|
|
@ -22,9 +22,9 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
public struct PollEvent : OptionSetType {
|
public struct PollEvent : OptionSet {
|
||||||
public let rawValue: Int16
|
public let rawValue: Int16
|
||||||
|
|
||||||
public init(rawValue: Int16) {
|
public init(rawValue: Int16) {
|
|
@ -22,7 +22,7 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
|
|
||||||
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)
|
zmq_proxy(frontend.socket, backend.socket, capture?.socket ?? nil)
|
|
@ -22,10 +22,10 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
import CZeroMQ
|
import CLibzmq
|
||||||
import Data
|
import Data
|
||||||
|
|
||||||
public struct SendMode : OptionSetType {
|
public struct SendMode : OptionSet {
|
||||||
public let rawValue: Int
|
public let rawValue: Int
|
||||||
|
|
||||||
public init(rawValue: Int) {
|
public init(rawValue: Int) {
|
||||||
|
@ -36,7 +36,7 @@ public struct SendMode : OptionSetType {
|
||||||
public static let SendMore = SendMode(rawValue: Int(ZMQ_SNDMORE))
|
public static let SendMore = SendMode(rawValue: Int(ZMQ_SNDMORE))
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ReceiveMode : OptionSetType {
|
public struct ReceiveMode : OptionSet {
|
||||||
public let rawValue: Int
|
public let rawValue: Int
|
||||||
|
|
||||||
public init(rawValue: Int) {
|
public init(rawValue: Int) {
|
||||||
|
@ -169,7 +169,7 @@ public final class Socket {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct SocketEvent : OptionSetType {
|
public struct SocketEvent : OptionSet {
|
||||||
public let rawValue: Int32
|
public let rawValue: Int32
|
||||||
|
|
||||||
public init(rawValue: Int32) {
|
public init(rawValue: Int32) {
|
||||||
|
@ -541,24 +541,24 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getCURVEPublicKey() throws -> String {
|
public func getCURVEPublicKey() throws -> String {
|
||||||
var value = [Int8](count: 41, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 41)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_CURVE_PUBLICKEY, value: &value, length: &length)
|
try getOption(ZMQ_CURVE_PUBLICKEY, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getCURVESecretKey() throws -> String {
|
public func getCURVESecretKey() throws -> String {
|
||||||
var value = [Int8](count: 41, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 41)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_CURVE_SECRETKEY, value: &value, length: &length)
|
try getOption(ZMQ_CURVE_SECRETKEY, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getCURVEServerKey() throws -> String {
|
public func getCURVEServerKey() throws -> String {
|
||||||
var value = [Int8](count: 41, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 41)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_CURVE_SERVERKEY, value: &value, length: &length)
|
try getOption(ZMQ_CURVE_SERVERKEY, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getEvents() throws -> PollEvent? {
|
public func getEvents() throws -> PollEvent? {
|
||||||
|
@ -583,10 +583,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getGSSAPIPrincipal() throws -> String {
|
public func getGSSAPIPrincipal() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_GSSAPI_PRINCIPAL, value: &value, length: &length)
|
try getOption(ZMQ_GSSAPI_PRINCIPAL, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getGSSAPIServer() throws -> Bool {
|
public func getGSSAPIServer() throws -> Bool {
|
||||||
|
@ -597,10 +597,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getGSSAPIServicePrincipal() throws -> String {
|
public func getGSSAPIServicePrincipal() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_GSSAPI_SERVICE_PRINCIPAL, value: &value, length: &length)
|
try getOption(ZMQ_GSSAPI_SERVICE_PRINCIPAL, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getHandshakeInterval() throws -> Int32 {
|
public func getHandshakeInterval() throws -> Int32 {
|
||||||
|
@ -611,10 +611,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getIdentity() throws -> String {
|
public func getIdentity() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_IDENTITY, value: &value, length: &length)
|
try getOption(ZMQ_IDENTITY, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length])) ?? ""
|
return String(validatingUTF8: Array(value[0 ..< length])) ?? ""
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getImmediate() throws -> Bool {
|
public func getImmediate() throws -> Bool {
|
||||||
|
@ -646,10 +646,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getLastEndpoint() throws -> String {
|
public func getLastEndpoint() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_LAST_ENDPOINT, value: &value, length: &length)
|
try getOption(ZMQ_LAST_ENDPOINT, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getLinger() throws -> Int32 {
|
public func getLinger() throws -> Int32 {
|
||||||
|
@ -681,10 +681,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getPlainPassword() throws -> String {
|
public func getPlainPassword() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_PLAIN_PASSWORD, value: &value, length: &length)
|
try getOption(ZMQ_PLAIN_PASSWORD, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getPlainServer() throws -> Bool {
|
public func getPlainServer() throws -> Bool {
|
||||||
|
@ -695,10 +695,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getPlainUsername() throws -> String {
|
public func getPlainUsername() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_PLAIN_USERNAME, value: &value, length: &length)
|
try getOption(ZMQ_PLAIN_USERNAME, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getRate() throws -> Int32 {
|
public func getRate() throws -> Int32 {
|
||||||
|
@ -835,10 +835,10 @@ extension Socket {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getZAPDomain() throws -> String {
|
public func getZAPDomain() throws -> String {
|
||||||
var value = [Int8](count: 256, repeatedValue: 0)
|
var value = [Int8](repeating: 0, count: 256)
|
||||||
var length = value.count
|
var length = value.count
|
||||||
try getOption(ZMQ_ZAP_DOMAIN, value: &value, length: &length)
|
try getOption(ZMQ_ZAP_DOMAIN, value: &value, length: &length)
|
||||||
return String.fromCString(Array(value[0 ..< length]))!
|
return String(validatingUTF8: Array(value[0 ..< length]))!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue