Loading Kinetic.xcodeproj/xcuserdata/scarlett.xcuserdatad/xcschemes/xcschememanagement.plistdeleted 100644 → 0 +0 −27 Original line number Diff line number Diff line <?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>SchemeUserState</key> <dict> <key>Kinetic.xcscheme</key> <dict> <key>orderHint</key> <integer>0</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> <dict> <key>3EDAAB3C1B66D32D00F30808</key> <dict> <key>primary</key> <true/> </dict> <key>3EDAAB461B66D32D00F30808</key> <dict> <key>primary</key> <true/> </dict> </dict> </dict> </plist> Kinetic/Discovery.swift +32 −25 Original line number Diff line number Diff line // // Discovery.swift // Kinetic // // Created by James Hughes on 9/4/15. // Copyright © 2015 Seagate. All rights reserved. // import Foundation import Socket // Copyright (c) 2015 Seagate Technology // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // @author: James Hughes import Socket public class KineticDiscovery { Loading @@ -31,32 +43,28 @@ public class KineticDiscovery { case name = "name" } public private(set) var discoverRunning: Bool = false public private(set) var active: Bool public private(set) var error:ErrorType? = nil private var discoverStopping = false private var s:Datagram? = nil private var stopping: Bool private var socket: Datagram? init (multicast mAddr:String = "239.1.2.3", port mPort:String = "8123", timeout:Double = 0, f:(AnyObject)->()) throws { s = try Datagram(multicast: mAddr, port: mPort) discoverRunning = true self.active = true self.stopping = false self.socket = try Datagram(multicast: mAddr, port: mPort) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) { do { defer { self.discoverRunning = false self.active = false } while true { // recieve it on the multicast socket var (_, _, bytes) = try self.s!.recv(65535, timeout:timeout) // assumes you have access to if self.discoverStopping { var (_, _, bytes) = try self.socket!.recv(65535, timeout:timeout) // assumes you have access to if self.stopping { return } let data = NSData(bytesNoCopy: &bytes, length: bytes.count, freeWhenDone:false) Loading @@ -68,11 +76,10 @@ public class KineticDiscovery { self.error = x } } } public func stop() { discoverStopping = true s!.sockClose() self.active = true self.socket!.sockClose() } } No newline at end of file Kinetic/NetworkChannel.swift +8 −10 Original line number Diff line number Diff line Loading @@ -18,18 +18,16 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // @author: Ignacio Corderi :-P // @author: Ignacio Corderi import Socket public let connect = NetworkChannel.connect public func connect(host: String, port: Int = NetworkChannel.DEFAULT_PORT, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { public func connect(host: String, port: Int = NetworkChannel.DEFAULT_PORT, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { return try NetworkChannel.connect(host, port: port, timeout: timeout) } import Socket public class NetworkChannel: CustomStringConvertible, KineticChannel { public static let DEFAULT_CONNECT_TIMEOUT = 1.0 Loading @@ -48,15 +46,15 @@ public class NetworkChannel: CustomStringConvertible, KineticChannel { // KineticChannel weak public private(set) var session: KineticSession? = nil public var connected: Bool { if stream!.eof {return false} if stream!.closing {return false} if self.stream!.eof {return false} if self.stream!.closing {return false} return true } internal init(host:String, port:Int, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws { self.port = port self.host = host stream = try Stream(connectTo: host, port: String(port), timeout: timeout) self.stream = try Stream(connectTo: host, port: String(port), timeout: timeout) } public static func connect(host: String, port: Int, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { Loading @@ -73,7 +71,7 @@ public class NetworkChannel: CustomStringConvertible, KineticChannel { } public func close() { stream!.releaseSock() self.stream!.releaseSock() } public func send(builder: Builder) throws { Loading Loading
Kinetic.xcodeproj/xcuserdata/scarlett.xcuserdatad/xcschemes/xcschememanagement.plistdeleted 100644 → 0 +0 −27 Original line number Diff line number Diff line <?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>SchemeUserState</key> <dict> <key>Kinetic.xcscheme</key> <dict> <key>orderHint</key> <integer>0</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> <dict> <key>3EDAAB3C1B66D32D00F30808</key> <dict> <key>primary</key> <true/> </dict> <key>3EDAAB461B66D32D00F30808</key> <dict> <key>primary</key> <true/> </dict> </dict> </dict> </plist>
Kinetic/Discovery.swift +32 −25 Original line number Diff line number Diff line // // Discovery.swift // Kinetic // // Created by James Hughes on 9/4/15. // Copyright © 2015 Seagate. All rights reserved. // import Foundation import Socket // Copyright (c) 2015 Seagate Technology // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // @author: James Hughes import Socket public class KineticDiscovery { Loading @@ -31,32 +43,28 @@ public class KineticDiscovery { case name = "name" } public private(set) var discoverRunning: Bool = false public private(set) var active: Bool public private(set) var error:ErrorType? = nil private var discoverStopping = false private var s:Datagram? = nil private var stopping: Bool private var socket: Datagram? init (multicast mAddr:String = "239.1.2.3", port mPort:String = "8123", timeout:Double = 0, f:(AnyObject)->()) throws { s = try Datagram(multicast: mAddr, port: mPort) discoverRunning = true self.active = true self.stopping = false self.socket = try Datagram(multicast: mAddr, port: mPort) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) { do { defer { self.discoverRunning = false self.active = false } while true { // recieve it on the multicast socket var (_, _, bytes) = try self.s!.recv(65535, timeout:timeout) // assumes you have access to if self.discoverStopping { var (_, _, bytes) = try self.socket!.recv(65535, timeout:timeout) // assumes you have access to if self.stopping { return } let data = NSData(bytesNoCopy: &bytes, length: bytes.count, freeWhenDone:false) Loading @@ -68,11 +76,10 @@ public class KineticDiscovery { self.error = x } } } public func stop() { discoverStopping = true s!.sockClose() self.active = true self.socket!.sockClose() } } No newline at end of file
Kinetic/NetworkChannel.swift +8 −10 Original line number Diff line number Diff line Loading @@ -18,18 +18,16 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // @author: Ignacio Corderi :-P // @author: Ignacio Corderi import Socket public let connect = NetworkChannel.connect public func connect(host: String, port: Int = NetworkChannel.DEFAULT_PORT, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { public func connect(host: String, port: Int = NetworkChannel.DEFAULT_PORT, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { return try NetworkChannel.connect(host, port: port, timeout: timeout) } import Socket public class NetworkChannel: CustomStringConvertible, KineticChannel { public static let DEFAULT_CONNECT_TIMEOUT = 1.0 Loading @@ -48,15 +46,15 @@ public class NetworkChannel: CustomStringConvertible, KineticChannel { // KineticChannel weak public private(set) var session: KineticSession? = nil public var connected: Bool { if stream!.eof {return false} if stream!.closing {return false} if self.stream!.eof {return false} if self.stream!.closing {return false} return true } internal init(host:String, port:Int, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws { self.port = port self.host = host stream = try Stream(connectTo: host, port: String(port), timeout: timeout) self.stream = try Stream(connectTo: host, port: String(port), timeout: timeout) } public static func connect(host: String, port: Int, timeout: Double = NetworkChannel.DEFAULT_CONNECT_TIMEOUT) throws -> KineticSession { Loading @@ -73,7 +71,7 @@ public class NetworkChannel: CustomStringConvertible, KineticChannel { } public func close() { stream!.releaseSock() self.stream!.releaseSock() } public func send(builder: Builder) throws { Loading