swift3 and c lib

This commit is contained in:
badim 2016-03-16 11:36:47 +02:00
parent df4a2b26a6
commit 2d7340b24d
11 changed files with 44 additions and 67 deletions

View File

@ -2,8 +2,8 @@ import PackageDescription
let package = Package(
name: "SwiftZMQ",
targets: [Target(name: "swiftzmq", dependencies: ["CLibzmq"])],
dependencies: [
.Package(url: "https://github.com/Zewo/CZeroMQ.git", majorVersion: 1),
.Package(url: "https://github.com/Zewo/Data.git", majorVersion: 0, minor: 2)
]
)

0
Sources/CLibzmq/empty.c Normal file
View File

View File

@ -0,0 +1,5 @@
module CLibzmq {
header "/usr/local/include/zmq.h"
link "zmq"
export *
}

View File

@ -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>

View File

@ -22,15 +22,15 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public func CURVEKeyPair() throws -> (publicKey: String, secretKey: String) {
var publicKey = [Int8](count: 41, repeatedValue: 0)
var secretKey = [Int8](count: 41, repeatedValue: 0)
var publicKey = [Int8](repeating: 0, count: 41)
var secretKey = [Int8](repeating: 0, count: 41)
if zmq_curve_keypair(&publicKey, &secretKey) == -1 {
throw Error.lastError
}
return (String.fromCString(publicKey)!, String.fromCString(secretKey)!)
return (String(validatingUTF8: publicKey)!, String(validatingUTF8: secretKey)!)
}

View File

@ -22,7 +22,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public enum SocketType {
case Req

View File

@ -22,13 +22,13 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public struct Error : ErrorType, CustomStringConvertible {
public struct Error : ErrorProtocol, CustomStringConvertible {
public let description: String
static var lastError: Error {
let description = String.fromCString(zmq_strerror(zmq_errno()))!
let description = String(validatingUTF8: zmq_strerror(zmq_errno()))!
return Error(description: description)
}
}

View File

@ -22,7 +22,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public final class Message {
var message: zmq_msg_t
@ -78,7 +78,7 @@ public final class Message {
throw Error.lastError
}
return String.fromCString(result)!
return String(validatingUTF8: result)!
}
public func close() throws {
@ -109,7 +109,7 @@ public final class Message {
return message
}
public func move(inout message: Message) throws {
public func move(message: inout Message) throws {
let message = try Message()
if zmq_msg_move(&message.message, &self.message) == -1 {

View File

@ -22,9 +22,9 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public struct PollEvent : OptionSetType {
public struct PollEvent : OptionSet {
public let rawValue: Int16
public init(rawValue: Int16) {

View File

@ -22,7 +22,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
public func proxy(frontend: Socket, backend: Socket, capture: Socket? = nil) {
zmq_proxy(frontend.socket, backend.socket, capture?.socket ?? nil)

View File

@ -22,10 +22,10 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
import CZeroMQ
import CLibzmq
import Data
public struct SendMode : OptionSetType {
public struct SendMode : OptionSet {
public let rawValue: Int
public init(rawValue: Int) {
@ -36,7 +36,7 @@ public struct SendMode : OptionSetType {
public static let SendMore = SendMode(rawValue: Int(ZMQ_SNDMORE))
}
public struct ReceiveMode : OptionSetType {
public struct ReceiveMode : OptionSet {
public let 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 init(rawValue: Int32) {
@ -541,24 +541,24 @@ extension Socket {
}
public func getCURVEPublicKey() throws -> String {
var value = [Int8](count: 41, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 41)
var length = value.count
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 {
var value = [Int8](count: 41, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 41)
var length = value.count
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 {
var value = [Int8](count: 41, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 41)
var length = value.count
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? {
@ -583,10 +583,10 @@ extension Socket {
}
public func getGSSAPIPrincipal() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -597,10 +597,10 @@ extension Socket {
}
public func getGSSAPIServicePrincipal() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -611,10 +611,10 @@ extension Socket {
}
public func getIdentity() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -646,10 +646,10 @@ extension Socket {
}
public func getLastEndpoint() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -681,10 +681,10 @@ extension Socket {
}
public func getPlainPassword() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -695,10 +695,10 @@ extension Socket {
}
public func getPlainUsername() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
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 {
@ -835,10 +835,10 @@ extension Socket {
}
public func getZAPDomain() throws -> String {
var value = [Int8](count: 256, repeatedValue: 0)
var value = [Int8](repeating: 0, count: 256)
var length = value.count
try getOption(ZMQ_ZAP_DOMAIN, value: &value, length: &length)
return String.fromCString(Array(value[0 ..< length]))!
return String(validatingUTF8: Array(value[0 ..< length]))!
}
}