mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-01 07:57:01 +00:00
Make queue optional
This commit is contained in:
parent
3bbca0285c
commit
50778f24f9
@ -20,12 +20,14 @@ private func wrappedRead(_ fd: Int32, _ data: UnsafeMutableRawPointer, _ count:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final class ManagedFile {
|
public final class ManagedFile {
|
||||||
private let queue: Queue
|
private let queue: Queue?
|
||||||
private let fd: Int32
|
private let fd: Int32
|
||||||
private let mode: ManagedFileMode
|
private let mode: ManagedFileMode
|
||||||
|
|
||||||
public init?(queue: Queue, path: String, mode: ManagedFileMode) {
|
public init?(queue: Queue?, path: String, mode: ManagedFileMode) {
|
||||||
|
if let queue = queue {
|
||||||
assert(queue.isCurrent())
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
self.queue = queue
|
self.queue = queue
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
let fileMode: Int32
|
let fileMode: Int32
|
||||||
@ -50,22 +52,30 @@ public final class ManagedFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
close(self.fd)
|
close(self.fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func write(_ data: UnsafeRawPointer, count: Int) -> Int {
|
public func write(_ data: UnsafeRawPointer, count: Int) -> Int {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
return wrappedWrite(self.fd, data, count)
|
return wrappedWrite(self.fd, data, count)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func read(_ data: UnsafeMutableRawPointer, _ count: Int) -> Int {
|
public func read(_ data: UnsafeMutableRawPointer, _ count: Int) -> Int {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
return wrappedRead(self.fd, data, count)
|
return wrappedRead(self.fd, data, count)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func readData(count: Int) -> Data {
|
public func readData(count: Int) -> Data {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
var result = Data(count: count)
|
var result = Data(count: count)
|
||||||
result.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<Int8>) -> Void in
|
result.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<Int8>) -> Void in
|
||||||
let readCount = self.read(bytes, count)
|
let readCount = self.read(bytes, count)
|
||||||
@ -75,17 +85,23 @@ public final class ManagedFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func seek(position: Int64) {
|
public func seek(position: Int64) {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
lseek(self.fd, position, SEEK_SET)
|
lseek(self.fd, position, SEEK_SET)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func truncate(count: Int64) {
|
public func truncate(count: Int64) {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
ftruncate(self.fd, count)
|
ftruncate(self.fd, count)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getSize() -> Int? {
|
public func getSize() -> Int? {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
var value = stat()
|
var value = stat()
|
||||||
if fstat(self.fd, &value) == 0 {
|
if fstat(self.fd, &value) == 0 {
|
||||||
return Int(value.st_size)
|
return Int(value.st_size)
|
||||||
@ -95,7 +111,9 @@ public final class ManagedFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func sync() {
|
public func sync() {
|
||||||
assert(self.queue.isCurrent())
|
if let queue = self.queue {
|
||||||
|
assert(queue.isCurrent())
|
||||||
|
}
|
||||||
fsync(self.fd)
|
fsync(self.fd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user