Skip to content

Commit

Permalink
Refactor Tree codes
Browse files Browse the repository at this point in the history
  • Loading branch information
humdrum committed Jan 15, 2024
1 parent ae25cba commit 41846ab
Show file tree
Hide file tree
Showing 17 changed files with 299 additions and 329 deletions.
6 changes: 3 additions & 3 deletions Sources/Core/Client.swift
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,8 @@ public actor Client {
return
}

try self.attachmentMap.forEach {
try self.stopWatchLoop($0.key)
for item in self.attachmentMap {
try self.stopWatchLoop(item.key)
}

var deactivateRequest = DeactivateClientRequest()
Expand Down Expand Up @@ -704,7 +704,7 @@ public actor Client {
switch body {
case .initialization(let initialization):
var onlineClients = Set<ActorID>()
initialization.clientIds.forEach { pbClientID in
for pbClientID in initialization.clientIds {
onlineClients.insert(pbClientID)
}

Expand Down
4 changes: 2 additions & 2 deletions Sources/Document/CRDT/CRDTObject.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ extension CRDTObject {
*/
func deepcopy() -> CRDTElement {
let clone = CRDTObject(createdAt: self.createdAt)
self.memberNodes.forEach {
clone.memberNodes.set(key: $0.key, value: $0.value.deepcopy())
for memberNode in self.memberNodes {
clone.memberNodes.set(key: memberNode.key, value: memberNode.value.deepcopy())
}

clone.remove(self.removedAt)
Expand Down
26 changes: 13 additions & 13 deletions Sources/Document/CRDT/CRDTRoot.swift
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,12 @@ class CRDTRoot {
var garbageLength: Int {
var count = 0

self.removedElementSetByCreatedAt.forEach {
for item in self.removedElementSetByCreatedAt {
count += 1
guard let pair = self.elementPairMapByCreatedAt[$0],
guard let pair = self.elementPairMapByCreatedAt[item],
let element = pair.element as? CRDTContainer
else {
return
continue
}

element.getDescendants { _, _ in
Expand All @@ -170,11 +170,11 @@ class CRDTRoot {
}
}

self.elementHasRemovedNodesSetByCreatedAt.forEach {
guard let pair = self.elementPairMapByCreatedAt[$0],
for item in self.elementHasRemovedNodesSetByCreatedAt {
guard let pair = self.elementPairMapByCreatedAt[item],
let element = pair.element as? CRDTGCElement
else {
return
continue
}

count += element.removedNodesLength
Expand All @@ -201,27 +201,27 @@ class CRDTRoot {
func garbageCollect(lessThanOrEqualTo ticket: TimeTicket) -> Int {
var count = 0

self.removedElementSetByCreatedAt.forEach {
guard let pair = self.elementPairMapByCreatedAt[$0],
for item in self.removedElementSetByCreatedAt {
guard let pair = self.elementPairMapByCreatedAt[item],
let removedAt = pair.element.removedAt, removedAt <= ticket
else {
return
continue
}

try? pair.parent?.purge(element: pair.element)
count += self.garbageCollectInternal(element: pair.element)
}

self.elementHasRemovedNodesSetByCreatedAt.forEach {
guard let pair = self.elementPairMapByCreatedAt[$0],
for item in self.elementHasRemovedNodesSetByCreatedAt {
guard let pair = self.elementPairMapByCreatedAt[item],
let element = pair.element as? CRDTGCElement
else {
return
continue
}

let removedNodeCount = element.purgeRemovedNodesBefore(ticket: ticket)
guard removedNodeCount > 0 else {
return
continue
}

self.elementHasRemovedNodesSetByCreatedAt.remove(element.createdAt.toIDString)
Expand Down
12 changes: 6 additions & 6 deletions Sources/Document/CRDT/CRDTText.swift
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public final class TextValue: RGATreeSplitValue, CustomStringConvertible {
if attrs.isEmpty == false {
var data = [String]()

attrs.sorted(by: { $0.key < $1.key }).forEach { key, value in
for (key, value) in attrs.sorted(by: { $0.key < $1.key }) {
if value.value.count > 2, value.value.first == "\"", value.value.last == "\"" {
data.append("\"\(key)\":\(value.value)")
} else {
Expand Down Expand Up @@ -188,7 +188,7 @@ final class CRDTText: CRDTGCElement {
{
let value = !content.isEmpty ? TextValue(content) : nil
if !content.isEmpty, let attributes {
attributes.forEach { key, jsonValue in
for (key, jsonValue) in attributes {
value?.setAttr(key: key, value: jsonValue, updatedAt: editedAt)
}
}
Expand Down Expand Up @@ -278,7 +278,7 @@ final class CRDTText: CRDTGCElement {
content: nil,
attributes: attributes))

attributes.forEach { key, jsonValue in
for (key, jsonValue) in attributes {
node.value.setAttr(key: key, value: jsonValue, updatedAt: editedAt)
}
}
Expand Down Expand Up @@ -326,9 +326,9 @@ final class CRDTText: CRDTGCElement {
public func toJSON() -> String {
var json = [String]()

self.rgaTreeSplit.forEach {
if !$0.isRemoved {
let nodeValue = $0.value.toJSON
for item in self.rgaTreeSplit {
if !item.isRemoved {
let nodeValue = item.value.toJSON
if nodeValue.isEmpty == false {
json.append(nodeValue)
}
Expand Down
Loading

0 comments on commit 41846ab

Please sign in to comment.