Swiftgram/Postbox/OrderStatisticTable.swift
2016-11-17 22:16:50 +03:00

60 lines
1.9 KiB
Swift

import Foundation
class MessageOrderStatisticTable: Table {
static func tableSpec(_ id: Int32) -> ValueBoxTable {
return ValueBoxTable(id: id, keyType: .binary)
}
/*private func update(peerId: PeerId, tagMask: MessageTags, id: Int32, count: Int) {
let key = ValueBoxKey(length: 8 + 4 + 4)
key.setInt64(0, value: peerId.toInt64())
key.setUInt32(8, value: tagMask.rawValue)
var writeValue: Int32 = 0
let buffer = MemoryBuffer(memory: &writeValue, capacity: 4, length: 4, freeWhenDone: false)
var idx = id
while (idx <= 1000000) {
key.setInt32(8 + 4, value: idx)
var value: Int32 = 0
if let data = self.valueBox.get(self.table, key: key) {
data.read(&value, offset: 0, length: 4)
}
if value == 0 {
self.valueBox.remove(self.table, key: key)
} else {
writeValue = value
self.valueBox.set(self.table, key: key, value: buffer)
}
idx += idx & -idx
}
}
private func get(peerId: PeerId, tagMask: MessageTags, id: Int32) -> Int32 {
let key = ValueBoxKey(length: 8 + 4)
key.setInt64(0, value: peerId.toInt64())
var idx = id
var sum: Int32 = 0
while (idx > 0) {
key.setInt32(8, value: idx)
var value: Int32 = 0
if let data = self.valueBox.get(self.table, key: key) {
data.read(&value, offset: 0, length: 4)
}
sum += value
idx -= idx & -idx
}
return sum
}
func set(_ id: MessageId, count: Int) {
self.update(peerId: id.peerId, id: id.id, count: count)
}
func get(_ id: MessageId) -> Int32 {
return self.get(peerId: id.peerId, id: id.id)
}*/
}