MobileCoin-Swift/Sources/Ledger/BlockMetadata.swift
Kyle Fleming 74a5c6f3fe
Continued logging cleanup (#17)
Co-authored-by: Eran Rundstein <eran@rundste.in>
2021-04-05 11:06:57 -07:00

49 lines
1.2 KiB
Swift

//
// Copyright (c) 2020-2021 MobileCoin. All rights reserved.
//
import Foundation
public struct BlockMetadata {
public let index: UInt64
let timestampStatus: TimestampStatus?
public var timestamp: Date? {
switch timestampStatus {
case .known(timestamp: let timestamp):
return timestamp
case .none, .unavailable, .temporarilyUnknown:
return nil
}
}
init(index: UInt64, timestamp: Date?) {
let timestampStatus: TimestampStatus?
if let timestamp = timestamp {
timestampStatus = .known(timestamp: timestamp)
} else {
timestampStatus = nil
}
self.init(index: index, timestampStatus: timestampStatus)
}
init(index: UInt64, timestampStatus: TimestampStatus?) {
self.index = index
self.timestampStatus = timestampStatus
}
}
extension BlockMetadata: Equatable {}
extension BlockMetadata: Hashable {}
extension BlockMetadata {
enum TimestampStatus {
case known(timestamp: Date)
case unavailable
case temporarilyUnknown
}
}
extension BlockMetadata.TimestampStatus: Equatable {}
extension BlockMetadata.TimestampStatus: Hashable {}