public void AddLinkSession(int moduleId, long linkSessionId) { lock (LinkSessionIds) { if (false == LinkSessionIds.TryGetValue(moduleId, out var linkSids)) { linkSids = new HashSet <long>(); LinkSessionIds.Add(moduleId, linkSids); } if (linkSids.Add(linkSessionId)) { Load.Online += App.Instance.Config.ApproximatelyLinkdCount; // 在真正的数据报告回来之前,临时增加统计。仅包括本linkd分配的。 // 本来Load应该总是由Provider报告的。 // linkd 的临时增加是为了能快速反应出报告间隔期间的分配。 } } }
public void RemoveLinkSession(int moduleId, long linkSessionId) { lock (LinkSessionIds) { if (LinkSessionIds.TryGetValue(moduleId, out var linkSids)) { if (linkSids.Remove(linkSessionId)) { // 下线时Provider会进行统计,这里避免二次计数, // 没有扣除不会有问题,本来Load应该总是由Provider报告的。 //--Load.Online; if (linkSids.Count == 0) { LinkSessionIds.Remove(moduleId); } } } } }