From 48c8aec10187a5bc13d805c1d89f69f78c72e17b Mon Sep 17 00:00:00 2001 From: "Dr. Brandon Wiley" Date: Mon, 6 Dec 2021 18:53:01 -0600 Subject: [PATCH] Moved TransmissionTypes to their own package, remove Transport, updated BlueSocket --- Package.swift | 6 +- Sources/TransmissionLinux/Connection.swift | 28 --- Sources/TransmissionLinux/Listener.swift | 14 -- .../TransmissionConnection.swift | 218 ++++-------------- .../TransmissionListener.swift | 1 + 5 files changed, 44 insertions(+), 223 deletions(-) delete mode 100644 Sources/TransmissionLinux/Connection.swift delete mode 100644 Sources/TransmissionLinux/Listener.swift diff --git a/Package.swift b/Package.swift index c8ec5a0..e4b8777 100644 --- a/Package.swift +++ b/Package.swift @@ -15,11 +15,11 @@ let package = Package( dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), + .package(url: "https://github.com/OperatorFoundation/TransmissionTypes", from: "0.0.1"), .package(url: "https://github.com/OperatorFoundation/Chord", from: "0.0.15"), .package(url: "https://github.com/OperatorFoundation/Datable", from: "3.1.4"), - .package(name: "Socket", url: "https://github.com/OperatorFoundation/BlueSocket", from: "1.1.0"), + .package(name: "Socket", url: "https://github.com/Kitura/BlueSocket", from: "2.0.2"), .package(url: "https://github.com/OperatorFoundation/Net", from: "0.0.1"), - .package(url: "https://github.com/OperatorFoundation/Transport", from: "2.3.11"), .package(url: "https://github.com/apple/swift-log.git", from: "1.4.2"), .package(url: "https://github.com/OperatorFoundation/SwiftHexTools.git", from: "1.2.5") ], @@ -29,7 +29,7 @@ let package = Package( .target( name: "TransmissionLinux", dependencies: [ - "Chord", "Socket", "Datable", "Transport", "Net", "SwiftHexTools", + "TransmissionTypes", "Chord", "Socket", "Datable", "Net", "SwiftHexTools", .product(name: "Logging", package: "swift-log") ] ), diff --git a/Sources/TransmissionLinux/Connection.swift b/Sources/TransmissionLinux/Connection.swift deleted file mode 100644 index bcec568..0000000 --- a/Sources/TransmissionLinux/Connection.swift +++ /dev/null @@ -1,28 +0,0 @@ -import Foundation -import Net -import Datable -import Transport -import Logging - -public protocol Connection -{ - // Reads exactly size bytes - func read(size: Int) -> Data? - - // reads up to maxSize bytes - func read(maxSize: Int) -> Data? - - func readWithLengthPrefix(prefixSizeInBits: Int) -> Data? - - func write(string: String) -> Bool - - func write(data: Data) -> Bool - - func writeWithLengthPrefix(data: Data, prefixSizeInBits: Int) -> Bool -} - -public enum ConnectionType -{ - case udp - case tcp -} diff --git a/Sources/TransmissionLinux/Listener.swift b/Sources/TransmissionLinux/Listener.swift deleted file mode 100644 index e128f52..0000000 --- a/Sources/TransmissionLinux/Listener.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// Listener.swift -// -// -// Created by Dr. Brandon Wiley on 8/31/20. -// - -import Foundation -import Logging - -public protocol Listener -{ - func accept() -> Connection -} diff --git a/Sources/TransmissionLinux/TransmissionConnection.swift b/Sources/TransmissionLinux/TransmissionConnection.swift index cc62072..20279a6 100644 --- a/Sources/TransmissionLinux/TransmissionConnection.swift +++ b/Sources/TransmissionLinux/TransmissionConnection.swift @@ -1,6 +1,5 @@ import Foundation import Datable -import Transport import Logging import SwiftQueue import SwiftHexTools @@ -8,11 +7,12 @@ import SwiftHexTools import Chord import Socket import Net +import TransmissionTypes public class TransmissionConnection: Connection { let id: Int - var connection: NetworkConnection + var connection: Socket var connectLock = DispatchGroup() var readLock = DispatchGroup() var writeLock = DispatchGroup() @@ -29,7 +29,7 @@ public class TransmissionConnection: Connection { case .tcp: guard let socket = try? Socket.create() else {return nil} - self.connection = .socket(socket) + self.connection = socket self.id = Int(socket.socketfd) do @@ -46,69 +46,18 @@ public class TransmissionConnection: Connection } } - public required init?(transport: Transport.Connection, logger: Logger? = nil) - { - self.log = logger - maybeLog(message: "Initializing Transmission connection", logger: self.log) - - self.id = Int.random(in: 0.. Data? @@ -184,45 +133,19 @@ public class TransmissionConnection: Connection var data: Data? - switch self.connection + do { - case .socket(let socket): - do - { - data = Data(repeating: 0, count: maxSize) - let bytesRead = try socket.read(into: &data!) - if (bytesRead < size) - { - data = Data(data![.. Bool { - var success = false - switch self.connection + do { - case .socket(let socket): - do - { - try socket.write(from: data) - success = true - break - } - catch - { - success = false - break - } - case .transport(let transport): - let lock = DispatchGroup() - lock.enter() - transport.send(content: data, contentContext: .defaultMessage, isComplete: false, completion: NWConnection.SendCompletion.contentProcessed( - { - error in - - guard error == nil else - { - success = false - lock.leave() - return - } - - success = true - lock.leave() - return - })) - lock.wait() + try self.connection.write(from: data) + return true + } + catch + { + return false } - - return success } } -enum NetworkConnection -{ - case socket(Socket) - case transport(Transport.Connection) -} - public func maybeLog(message: String, logger: Logger? = nil) { if logger != nil { logger!.debug("\(message)") diff --git a/Sources/TransmissionLinux/TransmissionListener.swift b/Sources/TransmissionLinux/TransmissionListener.swift index acef077..42666bc 100644 --- a/Sources/TransmissionLinux/TransmissionListener.swift +++ b/Sources/TransmissionLinux/TransmissionListener.swift @@ -9,6 +9,7 @@ import Foundation import Socket import Chord import Logging +import TransmissionTypes public class TransmissionListener: Listener {