public void SendClusterStatsRequest(int clusterId, int topicId) { if (peer == null || peer.PeerState != PeerStateValue.Connected) { return; } peer.OpCustom((byte)DiscussionOpCode.ClusterStatsRequest, ClusterStatsRequest.Write(clusterId, topicId), true); }
public void HandleClusterStatsRequest(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var req = ClusterStatsRequest.Read(operationRequest.Parameters); var resp = default(ClusterStatsResponse); //cluster is under rebuild if (!_topology.ReportCluster(req.clusterId, out resp)) { _room.Broadcast(peer, (Dictionary <byte, object>)null, sendParameters, (byte)DiscussionEventCode.ClusterStatsEvent, BroadcastTo.RoomAll); return; } resp.clusterTextTitle = "<No text name " + req.clusterId + ">"; resp.topicId = req.topicId; //get cluster shape var clusterSh = _doc.TryGetShape(resp.clusterId); if (clusterSh == null) { _room.Broadcast(peer, (Dictionary <byte, object>)null, sendParameters, (byte)DiscussionEventCode.ClusterStatsEvent, BroadcastTo.RoomAll); return; } resp.clusterShId = clusterSh.Id(); resp.clusterTextTitle = TryGetTextCaption(clusterSh); //get text caption shape id resp.initialOwnerId = clusterSh.InitialOwner(); //badge id -> arg.point id var clusteredPoints = new List <int>(); for (int i = 0; i < resp.points.Length; i++) { var apId = BadgeShapeIdToArgPointId(resp.points[i]); if (apId != -1) { clusteredPoints.Add(apId); } } if (clusteredPoints.Count() == 0) { _room.Broadcast(peer, (Dictionary <byte, object>)null, sendParameters, (byte)DiscussionEventCode.ClusterStatsEvent, BroadcastTo.RoomAll); } else { resp.points = clusteredPoints.ToArray(); _room.Broadcast(peer, resp.ToDict(), sendParameters, (byte)DiscussionEventCode.ClusterStatsEvent, BroadcastTo.RoomAll); } }
public Task <ClusterStatsResponse> StatsAsync(ClusterStatsRequest request, CancellationToken cancellationToken = default) { request.BeforeRequest(); return(DoRequestAsync <ClusterStatsRequest, ClusterStatsResponse>(request, cancellationToken)); }
public ClusterStatsResponse Stats(ClusterStatsRequest request) { request.BeforeRequest(); return(DoRequest <ClusterStatsRequest, ClusterStatsResponse>(request)); }