Exemple #1
0
        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;
        }
Exemple #2
0
        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);
        }