Skip to content

Commit

Permalink
Code style fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
dreymonde committed Feb 21, 2018
1 parent ff48410 commit fa4d821
Showing 1 changed file with 32 additions and 32 deletions.
64 changes: 32 additions & 32 deletions Sources/Shallows/MemoryStorage.swift
Original file line number Diff line number Diff line change
@@ -1,36 +1,5 @@
import Dispatch

enum MemoryStorageError : Error {
case noValue
}

public struct ThreadSafe<Value> {

private var value: Value
private let queue = DispatchQueue(label: "thread-safety-queue", attributes: [.concurrent])

public init(_ value: Value) {
self.value = value
}

public func read() -> Value {
return queue.sync { value }
}

public mutating func write(_ modify: (inout Value) -> ()) {
queue.sync(flags: .barrier) {
modify(&value)
}
}

public mutating func write(_ newValue: Value) {
queue.sync(flags: .barrier) {
value = newValue
}
}

}

public final class MemoryStorage<Key : Hashable, Value> : StorageProtocol {

public let storageName: String
Expand All @@ -45,7 +14,7 @@ public final class MemoryStorage<Key : Hashable, Value> : StorageProtocol {
_storage.write(newValue)
}
}

public init(storage: [Key : Value] = [:]) {
self._storage = ThreadSafe(storage)
self.storageName = "memory-storage-\(Key.self):\(Value.self)"
Expand All @@ -68,3 +37,34 @@ public final class MemoryStorage<Key : Hashable, Value> : StorageProtocol {
}

}

enum MemoryStorageError : Error {
case noValue
}

public struct ThreadSafe<Value> {

private var value: Value
private let queue = DispatchQueue(label: "thread-safety-queue", attributes: [.concurrent])

public init(_ value: Value) {
self.value = value
}

public func read() -> Value {
return queue.sync { value }
}

public mutating func write(_ modify: (inout Value) -> ()) {
queue.sync(flags: .barrier) {
modify(&value)
}
}

public mutating func write(_ newValue: Value) {
queue.sync(flags: .barrier) {
value = newValue
}
}

}

0 comments on commit fa4d821

Please sign in to comment.