Skip to content

Commit

Permalink
Updated lazy vars
Browse files Browse the repository at this point in the history
  • Loading branch information
ikhvorost committed Jan 18, 2024
1 parent 5b9c0fe commit 5d62edd
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 28 deletions.
43 changes: 21 additions & 22 deletions Sources/DLog/LogInterval.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,19 +74,19 @@ public struct IntervalConfig {
/// Accumulated interval statistics
public struct IntervalStatistics {
/// A number of total calls
public var count = 0
public let count: Int

/// A total time duration of all calls
public var total: TimeInterval = 0
public let total: TimeInterval

/// A minimum time duration
public var min: TimeInterval = 0
public let min: TimeInterval

/// A maximum time duration
public var max: TimeInterval = 0
public let max: TimeInterval

/// An average time duration
public var average: TimeInterval = 0
public let average: TimeInterval
}

fileprivate class StatisticsStore {
Expand All @@ -100,7 +100,7 @@ fileprivate class StatisticsStore {
if let data = intervals[id] {
return data
}
let data = IntervalStatistics()
let data = IntervalStatistics(count: 0, total: 0, min: 0, max: 0, average: 0)
intervals[id] = data
return data
}
Expand Down Expand Up @@ -192,27 +192,26 @@ public class LogInterval: LogItem {
time = Date()

// Statistics
var statistics = self.statistics
statistics.count += 1
statistics.total += duration
if statistics.min == 0 || statistics.min > duration {
statistics.min = duration
}
if statistics.max == 0 || statistics.max < duration {
statistics.max = duration
}
statistics.average = statistics.total / Double(statistics.count)
let stats = self.statistics
let count = stats.count + 1
let total = stats.total + duration
let newStats = IntervalStatistics(
count: count,
total: total,
min: stats.min == 0 || stats.min > duration ? duration : stats.min,
max: stats.max == 0 || stats.max < duration ? duration : stats.max,
average: total / Double(count))

StatisticsStore.shared[id] = statistics
StatisticsStore.shared[id] = newStats

// Metadata
let items: [(IntervalOptions, String, () -> Any)] = [
(.average, "average", { stringFromTimeInterval(statistics.average) }),
(.count, "count", { statistics.count }),
(.average, "average", { stringFromTimeInterval(newStats.average) }),
(.count, "count", { newStats.count }),
(.duration, "duration", { stringFromTimeInterval(self.duration) }),
(.max, "max", { stringFromTimeInterval(statistics.max) }),
(.min, "min", { stringFromTimeInterval(statistics.min) }),
(.total, "total", { stringFromTimeInterval(statistics.total) }),
(.max, "max", { stringFromTimeInterval(newStats.max) }),
(.min, "min", { stringFromTimeInterval(newStats.min) }),
(.total, "total", { stringFromTimeInterval(newStats.total) }),
]
let metadata = Metadata.metadata(from: items, options: config.intervalConfig.options)
self.metadata = _metadata() + [metadata]
Expand Down
12 changes: 6 additions & 6 deletions Sources/DLog/LogItem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ public class LogLocation: NSObject {
public let line: UInt

/// The module name.
public lazy var moduleName: String = {
public var moduleName: String {
(fileID as NSString).pathComponents.first!
}()
}

/// The file name.
public lazy var fileName: String = {
public var fileName: String {
(file as NSString).lastPathComponent
}()
}

public init(_ fileID: String, _ file: String, _ function: String, _ line: UInt) {
self.fileID = fileID
Expand Down Expand Up @@ -116,13 +116,13 @@ public class LogItem: NSObject {

private let _message: () -> LogMessage
/// Text of this log message.
public lazy var message: String = { _message().text }()
public private(set) lazy var message: String = { _message().text }()

let config: LogConfig

let _metadata: () -> [Metadata]
/// Metadata of log message
public lazy var metadata: [Metadata] = { _metadata() }()
public internal(set) lazy var metadata: [Metadata] = { _metadata() }()

init(message: @escaping () -> LogMessage, type: LogType, category: String, config: LogConfig, scope: LogScope?, metadata: @escaping () -> [Metadata], location: LogLocation) {
self._message = message
Expand Down

0 comments on commit 5d62edd

Please sign in to comment.