|  |  |  | // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // stringlint:disable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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, forceNSLog: Bool = false) { | 
					
						
							|  |  |  |     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)") | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     if forceNSLog { | 
					
						
							|  |  |  |         NSLog(message) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public func SNLogNotTests(_ message: String) { | 
					
						
							|  |  |  |     guard ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil else { return } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     SNLog(message) | 
					
						
							|  |  |  | } |