public void HandleDeleteSingleShape(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var req = DeleteSingleShapeRequest.Read(operationRequest.Parameters); var sh = _doc.TryGetShape(req.shapeId); if (sh == null) { return; } switch (sh.ShapeCode()) { case VdShapeType.ClusterLink: var edge = _topology.GetForwardEdge(req.shapeId); _topology.Unlink(edge.curr.GetId(), edge.next.GetId(), req.ownerId); //see __linkRemove break; case VdShapeType.Cluster: //not sent manually, but by system (client) _topology.DeleteCluster(_topology.GetCluster(req.shapeId), -1); break; default: UnlockDeleteBroadcast(sh.Id(), req.ownerId); break; } _pendingChanges = true; }
public void SendDeleteSingleShapeRequest(int ownerId, int shapeId, int topicId) { if (peer == null || peer.PeerState != PeerStateValue.Connected) { return; } peer.OpCustom((byte)DiscussionOpCode.DeleteSingleShapeRequest, DeleteSingleShapeRequest.Write(ownerId, shapeId, topicId), true); }