Skip to content

Commit

Permalink
added optional logging
Browse files Browse the repository at this point in the history
  • Loading branch information
CryptoSax committed Sep 24, 2021
1 parent 749ba4a commit 7e91fc9
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 38 deletions.
42 changes: 12 additions & 30 deletions Package.resolved
Original file line number Diff line number Diff line change
@@ -1,67 +1,49 @@
{
"object": {
"pins": [
{
"package": "Socket",
"repositoryURL": "https://github.com/OperatorFoundation/BlueSocket",
"state": {
"branch": null,
"revision": "90212ea8b66787c2d51d03527a04748ba6ee7679",
"version": "1.1.0"
}
},
{
"package": "Chord",
"repositoryURL": "https://github.com/OperatorFoundation/Chord",
"state": {
"branch": null,
"revision": "080cb496d8691571cad2ff241265a1e544d0960c",
"version": "0.0.10"
"revision": "25e5267c7dde0df1f7bcc285979f6302d46f7101",
"version": "0.0.12"
}
},
{
"package": "Datable",
"repositoryURL": "https://github.com/OperatorFoundation/Datable",
"state": {
"branch": null,
"revision": "aff3113e993217cae43180df9286eaa481682cce",
"version": "3.0.4"
}
},
{
"package": "NetworkLinux",
"repositoryURL": "https://github.com/OperatorFoundation/NetworkLinux.git",
"state": {
"branch": null,
"revision": "5b2fdbf29daeb5bba4fd4731080620a8fe3220e4",
"version": "0.3.0"
"revision": "31b055da961f794f1a2ce01b5521ee650815a9c9",
"version": "3.0.6"
}
},
{
"package": "SwiftHexTools",
"repositoryURL": "https://github.com/OperatorFoundation/SwiftHexTools",
"package": "swift-log",
"repositoryURL": "https://github.com/apple/swift-log.git",
"state": {
"branch": null,
"revision": "4ce4a4f66eea05c900d447af8c07ecaac720716c",
"version": "1.2.2"
"revision": "5d66f7ba25daf4f94100e7022febf3c75e37a6c7",
"version": "1.4.2"
}
},
{
"package": "SwiftQueue",
"repositoryURL": "https://github.com/OperatorFoundation/SwiftQueue",
"state": {
"branch": null,
"revision": "0e5979acbb104516a427bb2bb09debc50ca100b4",
"version": "0.0.3"
"revision": "eaa39c586fddb49ad1e0e8b5b3e9b0aaf0b3be82",
"version": "0.1.0"
}
},
{
"package": "Transport",
"repositoryURL": "https://github.com/OperatorFoundation/Transport",
"state": {
"branch": null,
"revision": "6cf442135c218560f317de6d17271849479d2186",
"version": "2.3.3"
"revision": "91dca4e691a9d2a6d38acd9b6dd64a1240da85f1",
"version": "2.3.6"
}
}
]
Expand Down
4 changes: 3 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ 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/apple/swift-log.git", from: "1.0.0"),
.package(url: "https://github.com/OperatorFoundation/Chord", from: "0.0.12"),
.package(url: "https://github.com/OperatorFoundation/Datable", from: "3.0.6"),
.package(url: "https://github.com/OperatorFoundation/Transport", from: "2.3.6"),
Expand All @@ -24,7 +25,8 @@ let package = Package(
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "Transmission",
dependencies: ["Chord", "Datable", "Transport"]),
dependencies: ["Chord", "Datable", "Transport", .product(name: "Logging", package: "swift-log")]
),
.testTarget(
name: "TransmissionTests",
dependencies: ["Transmission", "Datable"]),
Expand Down
34 changes: 27 additions & 7 deletions Sources/Transmission/Connection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,44 @@ import Foundation
import Network
import Datable
import Transport
import Logging

public class Connection
{
var connection: Transport.Connection
var connectLock = DispatchGroup()
var readLock = DispatchGroup()
var writeLock = DispatchGroup()
let log: Logger?

public convenience init?(host: String, port: Int, type: ConnectionType = .tcp)
public convenience init?(host: String, port: Int, type: ConnectionType = .tcp, logger: Logger? = nil)
{
let nwhost = NWEndpoint.Host(host)

let nwhost = NWEndpoint.Host(host)
let port16 = UInt16(port)
let nwport = NWEndpoint.Port(integerLiteral: port16)

switch type
{
case .tcp:
let nwconnection = NWConnection(host: nwhost, port: nwport, using: .tcp)
self.init(connection: nwconnection)
self.init(connection: nwconnection, logger: logger)
case .udp:
let nwconnection = NWConnection(host: nwhost, port: nwport, using: .udp)
self.init(connection: nwconnection)
self.init(connection: nwconnection, logger: logger)
}
}

public convenience init?(connection: NWConnection)
public convenience init?(connection: NWConnection, logger: Logger? = nil)
{
self.init(transport: connection)
self.init(transport: connection, logger: logger)
}

public init?(transport: Transport.Connection)
public init?(transport: Transport.Connection, logger: Logger? = nil)
{
self.log = logger
maybeLog(message: "Initializing Transmission connection", logger: self.log)

self.connection = transport

var success = false
Expand Down Expand Up @@ -73,13 +78,15 @@ public class Connection

func failConnect()
{
maybeLog(message: "Failed to make a Transmission connection", logger: self.log)
self.connection.stateUpdateHandler = nil
self.connection.cancel()
self.connectLock.leave()
}

public func read(size: Int) -> Data?
{
maybeLog(message: "Transmission read called", logger: self.log)
var result: Data?

self.readLock.enter()
Expand All @@ -103,6 +110,8 @@ public class Connection

readLock.wait()

maybeLog(message: "Transmission read finished!", logger: self.log)

return result
}

Expand All @@ -114,6 +123,7 @@ public class Connection

public func write(data: Data) -> Bool
{
maybeLog(message: "Transmission write called", logger: self.log)
var success = false

self.writeLock.enter()
Expand All @@ -135,6 +145,8 @@ public class Connection

self.writeLock.wait()

maybeLog(message: "Transmission write finished", logger: self.log)

return success
}
}
Expand All @@ -144,3 +156,11 @@ public enum ConnectionType
case udp
case tcp
}

public func maybeLog(message: String, logger: Logger? = nil) {
if logger != nil {
logger!.debug("\(message)")
} else {
print(message)
}
}

0 comments on commit 7e91fc9

Please sign in to comment.