Changeset 485 in code for trunk/downstream.go
- Timestamp:
- Mar 29, 2021, 3:49:50 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r484 r485 362 362 } 363 363 364 delivered := network.delivered.Value(entity) 365 if delivered == nil { 366 return 367 } 368 369 delivered[dc.clientName] = id 364 network.delivered.StoreID(entity, dc.clientName, id) 370 365 } 371 366 … … 998 993 }) 999 994 if firstClient { 1000 dc.sendNetworkBacklog(net) 995 net.delivered.ForEachTarget(func(target string) { 996 dc.sendTargetBacklog(net, target) 997 }) 1001 998 } 1002 999 1003 1000 // Fast-forward history to last message 1004 for targetCM, entry := range net.delivered.innerMap { 1005 delivered := entry.value.(deliveredClientMap) 1006 ch := net.channels.Value(targetCM) 1001 net.delivered.ForEachTarget(func(target string) { 1002 ch := net.channels.Value(target) 1007 1003 if ch != nil && ch.Detached { 1008 continue 1009 } 1010 1004 return 1005 } 1006 1007 targetCM := net.casemap(target) 1011 1008 lastID, err := dc.user.msgStore.LastMsgID(net, targetCM, time.Now()) 1012 1009 if err != nil { 1013 1010 dc.logger.Printf("failed to get last message ID: %v", err) 1014 continue 1015 } 1016 delivered[dc.clientName] = lastID 1017 } 1011 return 1012 } 1013 1014 net.delivered.StoreID(target, dc.clientName, lastID) 1015 }) 1018 1016 }) 1019 1017 … … 1035 1033 } 1036 1034 1037 func (dc *downstreamConn) sendNetworkBacklog(net *network) {1038 for _, entry := range net.delivered.innerMap {1039 target := entry.originalKey1040 dc.sendTargetBacklog(net, target)1041 }1042 }1043 1044 1035 func (dc *downstreamConn) sendTargetBacklog(net *network, target string) { 1045 1036 if dc.caps["draft/chathistory"] || dc.user.msgStore == nil { … … 1049 1040 return 1050 1041 } 1051 delivered := net.delivered.Value(target) 1052 if delivered == nil { 1053 return 1054 } 1055 lastDelivered, ok := delivered[dc.clientName] 1056 if !ok { 1042 1043 lastDelivered := net.delivered.LoadID(target, dc.clientName) 1044 if lastDelivered == "" { 1057 1045 return 1058 1046 }
Note:
See TracChangeset
for help on using the changeset viewer.