|
|
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
import SignalCoreKit
|
|
|
|
|
|
|
|
private extension DispatchQueue {
|
|
|
|
static var isDBWriteQueue: Bool {
|
|
|
|
/// The `dispatch_queue_get_label` function is used to get the label for a given DispatchQueue, in Swift this
|
|
|
|
/// was replaced with the `label` property on a queue instance but you used to be able to just pass `nil` in order
|
|
|
|
/// to get the name of the current queue - it seems that there might be a hole in the current design where there isn't
|
|
|
|
/// a built-in way to get the label of the current queue natively in Swift
|
|
|
|
///
|
|
|
|
/// On a positive note it seems that we can safely call `__dispatch_queue_get_label(nil)` in order to do this,
|
|
|
|
/// it won't appear in auto-completed code but works properly
|
|
|
|
///
|
|
|
|
/// For more information see
|
|
|
|
/// https://developer.apple.com/forums/thread/701313?answerId=705773022#705773022
|
|
|
|
/// https://forums.swift.org/t/gcd-getting-current-dispatch-queue-name-with-swift-3/3039/2
|
|
|
|
return (String(cString: __dispatch_queue_get_label(nil)) == "\(Storage.queuePrefix).writer")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public func SNLog(_ message: String) {
|
|
|
|
let logPrefixes: String = [
|
|
|
|
"Session",
|
|
|
|
(Thread.isMainThread ? "Main" : nil),
|
|
|
|
(DispatchQueue.isDBWriteQueue ? "DBWrite" : nil)
|
|
|
|
]
|
|
|
|
.compactMap { $0 }
|
|
|
|
.joined(separator: ", ")
|
|
|
|
|
|
|
|
#if DEBUG
|
|
|
|
print("[\(logPrefixes)] \(message)")
|
|
|
|
#endif
|
|
|
|
OWSLogger.info("[\(logPrefixes)] \(message)")
|
|
|
|
}
|
|
|
|
|
|
|
|
public func SNLogNotTests(_ message: String) {
|
|
|
|
guard ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil else { return }
|
|
|
|
|
|
|
|
SNLog(message)
|
|
|
|
}
|