private void clusterStatsResponse(ClusterStatsResponse resp, bool ok) { if (!ok) { ++_clusterReportsGenerated; if (ClustersAndLinksDone()) { finalizeReport(); } return; } //generate list of ArgPoints var argPoints = new ArgPoint[resp.points.Length]; for (int i = 0; i < resp.points.Length; i++) { var pointId = resp.points[i]; argPoints[i] = _ctx.ArgPoint.FirstOrDefault(ap0 => ap0.Id == pointId); } var topic = _ctx.Topic.FirstOrDefault(t0 => t0.Id == resp.topicId); var initialOwner = _ctx.Person.FirstOrDefault(p0 => p0.Id == resp.initialOwnerId); var report = new ClusterReport(topic, resp.clusterId, resp.clusterShId, resp.clusterTextTitle, argPoints, initialOwner); _clusterReports.Add(report); ++_clusterReportsGenerated; if (ClustersAndLinksDone()) { finalizeReport(); } }
public virtual async Task <ClusterStatsResponse> StatsAsync(string filterPath, string nodeId, CancellationToken cancellationToken) { ClusterStatsResponse result; try { HttpResponseMessage responseMessage; if (string.IsNullOrWhiteSpace(nodeId)) { responseMessage = await GetAsync("/_cluster/stats", filterPath, cancellationToken); } else { responseMessage = await GetAsync($"/_cluster/stats/nodes/{nodeId}", filterPath, cancellationToken); } var response = await responseMessage.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <ClusterStatsResponse>(response); result.IsValid = true; } catch (Exception ex) { result = new ClusterStatsResponse { IsValid = false, OriginalException = ex }; } return(result); }
//returns list of badge IDs, not ArgPoint IDs! Custer text is also undefined //if returns false, cluster was already removed public bool ReportCluster(int clusterId, out ClusterStatsResponse clusterResp) { clusterResp = default(ClusterStatsResponse); if (!_clusters.ContainsKey(clusterId)) { return(false); } var cluster = _clusters[clusterId]; clusterResp.clusterId = clusterId; var badges = cluster.GetClusterables(); var badgesArr = new int[badges.Count()]; int i = 0; foreach (var badge in badges) { badgesArr[i++] = badge.GetId(); } clusterResp.points = badgesArr; return(true); }
public void OnEvent(EventData eventData) { switch (eventData.Code) { case (byte)LiteEventCode.Join: int[] actNrs = (int[])eventData.Parameters[(byte)ParameterKey.Actors]; int ActorNr = (int)eventData.Parameters[(byte)ParameterKey.ActorNr]; var actProps = (Hashtable)eventData.Parameters[(byte)ParameterKey.ActorProperties]; Console.WriteLine("Join event actors.len={0}", actNrs.Length); List <int> unknownPeersNrs = new List <int>(); for (int i = 0; i < actNrs.Length; i++) { if (!usersOnline.ContainsKey(actNrs[i])) { if (!unknownPeersNrs.Contains(actNrs[i])) { unknownPeersNrs.Add(actNrs[i]); } } } requestPeersInfo(unknownPeersNrs.ToArray()); DbgPrintOnlineList(); break; case (byte)EventCode.Leave: actNrs = (int[])eventData.Parameters[(byte)ParameterKey.Actors]; int leftActNr = (int)eventData.Parameters[(byte)ParameterKey.ActorNr]; Console.WriteLine("Leave event, actors.len={0}", actNrs.Length); if (usersOnline.ContainsKey(leftActNr)) { if (userLeaves != null) { DiscUser leaving = usersOnline[leftActNr]; userLeaves(leaving); } usersOnline.Remove(leftActNr); } DbgPrintOnlineList(); break; case (byte)DiscussionEventCode.InstantUserPlusMinus: if (smbdLeaved != null) { smbdLeaved(); } break; case (byte)DiscussionEventCode.StructureChanged: int initiater = (int)eventData.Parameters[(byte)DiscussionParamKey.UserId]; int devType = (int)eventData.Parameters[(byte)DiscussionParamKey.DeviceType]; if (eventData.Parameters.ContainsKey((byte)DiscussionParamKey.ForceSelfNotification)) { //topic updated if (onStructChanged != null) { onStructChanged(Serializers.ReadChangedTopicId(eventData.Parameters), initiater, (DeviceType)devType); } } else if (initiater != -1 && initiater != localUsr.ActNr) { if (onStructChanged != null) { onStructChanged(Serializers.ReadChangedTopicId(eventData.Parameters), initiater, (DeviceType)devType); } } break; case (byte)DiscussionEventCode.ArgPointChanged: var changeType = PointChangedType.Modified; int topicId; int personId; int argPointId = Serializers.ReadChangedArgPoint(eventData.Parameters, out changeType, out topicId, out personId); if (argPointChanged != null) { argPointChanged(argPointId, topicId, changeType, personId); } break; case (byte)DiscussionEventCode.UserAccPlusMinus: if (userAccPlusMinus != null) { userAccPlusMinus(); } break; case (byte)DiscussionEventCode.StatsEvent: if (onStatsEvent != null) { StEvent e; int userId = -1; int discussionId = -1; int statsTopicId = -1; DeviceType devTyp; Serializers.ReadStatEventParams(eventData.Parameters, out e, out userId, out discussionId, out statsTopicId, out devTyp); onStatsEvent(e, userId, discussionId, statsTopicId, devTyp); } break; case (byte)DiscussionEventCode.CursorEvent: if (cursorEvent != null) { cursorEvent(CursorEvent.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.CreateShapeEvent: if (createShapeEvent != null) { createShapeEvent(CreateShape.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.UnselectAllEvent: if (unselectAll != null) { unselectAll(UnselectAllEvent.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.DeleteSingleShapeEvent: if (deleteSingleShape != null) { deleteSingleShape(DeleteSingleShapeEvent.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.ApplyPointEvent: if (applyPoint != null) { applyPoint(PointMove.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.StateSyncEvent: if (syncStateEvent != null) { syncStateEvent(ShapeState.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.LinkCreateEvent: if (onLinkCreateEvent != null) { onLinkCreateEvent(LinkCreateMessage.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.UnclusterBadgeEvent: if (onUnclusterBadgeEvent != null) { onUnclusterBadgeEvent(UnclusterBadgeMessage.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.ClusterBadgeEvent: if (onClusterBadgeEvent != null) { onClusterBadgeEvent(ClusterBadgeMessage.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.InkEvent: if (inkEvent != null) { inkEvent(InkMessage.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.SceneLoadingDone: if (loadingDoneEvent != null) { loadingDoneEvent(); } break; case (byte)DiscussionEventCode.DEditorReportEvent: if (dEditorReportResponse != null) { dEditorReportResponse(DEditorStatsResponse.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.ClusterStatsEvent: if (clusterStatsResponse != null) { if (eventData.Parameters == null || eventData.Parameters.Count() == 0) { clusterStatsResponse(default(ClusterStatsResponse), false); } else { clusterStatsResponse(ClusterStatsResponse.Read(eventData.Parameters), true); } } break; case (byte)DiscussionEventCode.LinkStatsEvent: if (linkStatsResponseEvent != null) { if (eventData.Parameters == null || eventData.Parameters.Count() == 0) { linkStatsResponseEvent(default(LinkReportResponse), false); } else { linkStatsResponseEvent(LinkReportResponse.Read(eventData.Parameters), true); } } break; case (byte)DiscussionEventCode.BadgeViewEvent: if (onBadgeViewRequest != null) { onBadgeViewRequest(BadgeViewMessage.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.SourceViewEvent: if (onSourceViewRequest != null) { onSourceViewRequest(ExplanationModeSyncMsg.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.CommentReadEvent: if (onCommentRead != null) { onCommentRead(CommentsReadEvent.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.AttachLaserPointerEvent: if (onAttachLaserPointer != null) { onAttachLaserPointer(LaserPointer.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.DetachLaserPointerEvent: if (onDetachLaserPointer != null) { onDetachLaserPointer(LaserPointer.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.LaserPointerMovedEvent: if (onLaserPointerMoved != null) { onLaserPointerMoved(LaserPointer.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.ImageViewerManipulatedEvent: if (onImageViewerManipulated != null) { onImageViewerManipulated(ImageViewerMatrix.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.BrowserScrollChangedEvent: if (onBrowserScroll != null) { onBrowserScroll(BrowserScrollPosition.Read(eventData.Parameters)); } break; case (byte)DiscussionEventCode.PdfScrollChangedEvent: if (onPdfScroll != null) { onPdfScroll(PdfScrollPosition.Read(eventData.Parameters)); } break; default: Console.WriteLine("Unhandled event " + eventData.Code); break; } }