diff --git a/LibSession-Util b/LibSession-Util index 56e75ac28..091b58f13 160000 --- a/LibSession-Util +++ b/LibSession-Util @@ -1 +1 @@ -Subproject commit 56e75ac289ac325ac26940f94a685ff80e68ca91 +Subproject commit 091b58f134bb48377a9cf93b905b6235d54d6581 diff --git a/Scripts/build_libSession_util.sh b/Scripts/build_libSession_util.sh index 886aa2bf5..65c78ba58 100755 --- a/Scripts/build_libSession_util.sh +++ b/Scripts/build_libSession_util.sh @@ -103,6 +103,7 @@ echo "Checking for changes to source" NEW_SOURCE_HASH=$(find "${SRCROOT}/LibSession-Util/src" -type f -exec md5 {} + | awk '{print $NF}' | sort | md5 | awk '{print $NF}') NEW_HEADER_HASH=$(find "${SRCROOT}/LibSession-Util/include" -type f -exec md5 {} + | awk '{print $NF}' | sort | md5 | awk '{print $NF}') +NEW_EXTERNAL_HASH=$(find "${SRCROOT}/LibSession-Util/external" -type f -exec md5 {} + | awk '{print $NF}' | sort | md5 | awk '{print $NF}') if [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_source_hash.log" ]; then read -r OLD_SOURCE_HASH < "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_source_hash.log" @@ -112,12 +113,16 @@ if [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_header_hash.log" ]; read -r OLD_HEADER_HASH < "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_header_hash.log" fi +if [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_external_hash.log" ]; then + read -r OLD_EXTERNAL_HASH < "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_external_hash.log" +fi + if [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_archs.log" ]; then read -r OLD_ARCHS < "${TARGET_BUILD_DIR}/libSessionUtil/libsession_util_archs.log" fi # If all of the hashes match, the archs match and there is a library file then we can just stop here -if [ "${NEW_SOURCE_HASH}" == "${OLD_SOURCE_HASH}" ] && [ "${NEW_HEADER_HASH}" == "${OLD_HEADER_HASH}" ] && [ "${ARCHS[*]}" == "${OLD_ARCHS}" ] && [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libSessionUtil.a" ]; then +if [ "${NEW_SOURCE_HASH}" == "${OLD_SOURCE_HASH}" ] && [ "${NEW_HEADER_HASH}" == "${OLD_HEADER_HASH}" ] && [ "${NEW_EXTERNAL_HASH}" == "${OLD_EXTERNAL_HASH}" ] && [ "${ARCHS[*]}" == "${OLD_ARCHS}" ] && [ -f "${TARGET_BUILD_DIR}/libSessionUtil/libSessionUtil.a" ]; then echo "Build is up-to-date" exit 0 fi diff --git a/Session/Meta/AppDelegate.swift b/Session/Meta/AppDelegate.swift index c7805c05e..eba309ed1 100644 --- a/Session/Meta/AppDelegate.swift +++ b/Session/Meta/AppDelegate.swift @@ -52,8 +52,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD appSpecificBlock: { // Create AppEnvironment AppEnvironment.shared.setup() + LibSession.addLogger() LibSession.createNetworkIfNeeded() - LibSession.addNetworkLogger() // Note: Intentionally dispatching sync as we want to wait for these to complete before // continuing diff --git a/SessionSnodeKit/LibSession/LibSession+Networking.swift b/SessionSnodeKit/LibSession/LibSession+Networking.swift index 940847763..684f6c399 100644 --- a/SessionSnodeKit/LibSession/LibSession+Networking.swift +++ b/SessionSnodeKit/LibSession/LibSession+Networking.swift @@ -6,13 +6,10 @@ import Foundation import Combine import SessionUtil import SessionUtilitiesKit -import SignalCoreKit // MARK: - LibSession public extension LibSession { - private static let desiredLogCategories: [LogCategory] = [.network] - private static var networkCache: Atomic?> = Atomic(nil) private static var snodeCachePath: String { "\(OWSFileSystem.appSharedDataDirectoryPath())/snodeCache" } private static var lastPaths: Atomic<[Set]> = Atomic([]) @@ -85,33 +82,6 @@ public extension LibSession { pathsChangedCallbacks.mutate { $0.removeValue(forKey: callbackId) } } - static func addNetworkLogger() { - getOrCreateNetwork().first().sinkUntilComplete(receiveValue: { network in - network_add_logger(network, { lvl, namePtr, nameLen, msgPtr, msgLen in - guard - LibSession.desiredLogCategories.contains(LogCategory(namePtr, nameLen)), - let msg: String = String(pointer: msgPtr, length: msgLen, encoding: .utf8) - else { return } - - let trimmedLog: String = msg.trimmingCharacters(in: .whitespacesAndNewlines) - switch lvl { - case LOG_LEVEL_TRACE: OWSLogger.verbose(trimmedLog) - case LOG_LEVEL_DEBUG: OWSLogger.debug(trimmedLog) - case LOG_LEVEL_INFO: OWSLogger.info(trimmedLog) - case LOG_LEVEL_WARN: OWSLogger.warn(trimmedLog) - case LOG_LEVEL_ERROR: OWSLogger.error(trimmedLog) - case LOG_LEVEL_CRITICAL: OWSLogger.error(trimmedLog) - case LOG_LEVEL_OFF: break - default: break - } - - #if DEBUG - print(trimmedLog) - #endif - }) - }) - } - static func closeNetworkConnections() { guard let network: UnsafeMutablePointer = networkCache.wrappedValue else { return } @@ -476,23 +446,6 @@ extension LibSession { } } -// MARK: - LogCategory - -extension LibSession { - enum LogCategory: String { - case quic - case network - case unknown - - init(_ namePtr: UnsafePointer?, _ nameLen: Int) { - switch String(pointer: namePtr, length: nameLen, encoding: .utf8).map({ LogCategory(rawValue: $0) }) { - case .some(let cat): self = cat - case .none: self = .unknown - } - } - } -} - // MARK: - Snode extension LibSession { diff --git a/SessionUtilitiesKit/LibSession/LibSession.swift b/SessionUtilitiesKit/LibSession/LibSession.swift index 7e5c7414e..42cb15a8f 100644 --- a/SessionUtilitiesKit/LibSession/LibSession.swift +++ b/SessionUtilitiesKit/LibSession/LibSession.swift @@ -2,9 +2,62 @@ import Foundation import SessionUtil +import SignalCoreKit // MARK: - LibSession public enum LibSession { + private static let logLevels: [LogCategory: LOG_LEVEL] = [ + .config: LOG_LEVEL_INFO, + .network: LOG_LEVEL_INFO + ] + public static var version: String { String(cString: LIBSESSION_UTIL_VERSION_STR) } } + +// MARK: - Logging + +extension LibSession { + public static func addLogger() { + // Set the desired log levels first + logLevels.forEach { cat, level in + session_logger_set_level(cat.rawValue.cArray, level) + } + + // Add the logger + session_add_logger_full({ msgPtr, msgLen, _, _, lvl in + guard let msg: String = String(pointer: msgPtr, length: msgLen, encoding: .utf8) else { return } + + let trimmedLog: String = msg.trimmingCharacters(in: .whitespacesAndNewlines) + switch lvl { + case LOG_LEVEL_TRACE: OWSLogger.verbose(trimmedLog) + case LOG_LEVEL_DEBUG: OWSLogger.debug(trimmedLog) + case LOG_LEVEL_INFO: OWSLogger.info(trimmedLog) + case LOG_LEVEL_WARN: OWSLogger.warn(trimmedLog) + case LOG_LEVEL_ERROR: OWSLogger.error(trimmedLog) + case LOG_LEVEL_CRITICAL: OWSLogger.error(trimmedLog) + case LOG_LEVEL_OFF: break + default: break + } + + #if DEBUG + print(trimmedLog) + #endif + }) + } + + // MARK: - Internal + + fileprivate enum LogCategory: String { + case config + case network + case quic + + init?(_ catPtr: UnsafePointer?, _ catLen: Int) { + switch String(pointer: catPtr, length: catLen, encoding: .utf8).map({ LogCategory(rawValue: $0) }) { + case .some(let cat): self = cat + case .none: return nil + } + } + } +}