mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-27 22:39:48 +00:00
Cleanup
This commit is contained in:
@@ -552,6 +552,17 @@ public final class PostboxEncoder {
|
||||
self.buffer.write(&bytesLength, offset: 0, length: 4)
|
||||
self.buffer.write(bytes.memory, offset: 0, length: bytes.length)
|
||||
}
|
||||
|
||||
public func encodeData(_ data: Data, forKey key: StaticString) {
|
||||
self.encodeKey(key)
|
||||
var type: Int8 = ValueType.Bytes.rawValue
|
||||
self.buffer.write(&type, offset: 0, length: 1)
|
||||
var bytesLength: Int32 = Int32(data.count)
|
||||
self.buffer.write(&bytesLength, offset: 0, length: 4)
|
||||
data.withUnsafeBytes { (bytes: UnsafePointer<Int8>) -> Void in
|
||||
self.buffer.write(bytes, offset: 0, length: Int(bytesLength))
|
||||
}
|
||||
}
|
||||
|
||||
public let sharedWriteBuffer = WriteBuffer()
|
||||
}
|
||||
@@ -1027,6 +1038,38 @@ public final class PostboxDecoder {
|
||||
}
|
||||
}
|
||||
|
||||
public func decodeOptionalObjectArrayWithDecoderForKey<T>(_ key: StaticString) -> [T]? where T: PostboxCoding {
|
||||
if PostboxDecoder.positionOnKey(self.buffer.memory, offset: &self.offset, maxOffset: self.buffer.length, length: self.buffer.length, key: key, valueType: .ObjectArray) {
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, self.buffer.memory + self.offset, 4)
|
||||
self.offset += 4
|
||||
|
||||
var array: [T] = []
|
||||
array.reserveCapacity(Int(length))
|
||||
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
var typeHash: Int32 = 0
|
||||
memcpy(&typeHash, self.buffer.memory + self.offset, 4)
|
||||
self.offset += 4
|
||||
|
||||
var objectLength: Int32 = 0
|
||||
memcpy(&objectLength, self.buffer.memory + self.offset, 4)
|
||||
|
||||
let innerDecoder = PostboxDecoder(buffer: ReadBuffer(memory: self.buffer.memory + (self.offset + 4), length: Int(objectLength), freeWhenDone: false))
|
||||
self.offset += 4 + Int(objectLength)
|
||||
|
||||
array.append(T(decoder: innerDecoder))
|
||||
|
||||
i += 1
|
||||
}
|
||||
|
||||
return array
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
public func decodeObjectArrayWithCustomDecoderForKey<T>(_ key: StaticString, decoder: (PostboxDecoder) throws -> T) throws -> [T] {
|
||||
if PostboxDecoder.positionOnKey(self.buffer.memory, offset: &self.offset, maxOffset: self.buffer.length, length: self.buffer.length, key: key, valueType: .ObjectArray) {
|
||||
var length: Int32 = 0
|
||||
@@ -1395,4 +1438,19 @@ public final class PostboxDecoder {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
public func decodeDataForKey(_ key: StaticString) -> Data? {
|
||||
if PostboxDecoder.positionOnKey(self.buffer.memory, offset: &self.offset, maxOffset: self.buffer.length, length: self.buffer.length, key: key, valueType: .Bytes) {
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, self.buffer.memory + self.offset, 4)
|
||||
self.offset += 4 + Int(length)
|
||||
var result = Data(count: Int(length))
|
||||
result.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<Int8>) -> Void in
|
||||
memcpy(bytes, self.buffer.memory.advanced(by: self.offset - Int(length)), Int(length))
|
||||
}
|
||||
return result
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1322,11 +1322,13 @@ public final class Postbox {
|
||||
print("(Postbox initialization took \((CFAbsoluteTimeGetCurrent() - startTime) * 1000.0) ms")
|
||||
|
||||
do {
|
||||
let startTime = CFAbsoluteTimeGetCurrent()
|
||||
let state = self.chatListIndexTable.debugReindexUnreadCounts(postbox: self)
|
||||
if state != self.messageHistoryMetadataTable.getChatListTotalUnreadState() {
|
||||
print("Initial read state mismatch")
|
||||
self.messageHistoryMetadataTable.setChatListTotalUnreadState(state)
|
||||
}
|
||||
postboxLog("debugReindexUnreadCounts took \(CFAbsoluteTimeGetCurrent() - startTime)")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user