public void HandleCreateShape(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var req = CreateShape.Read(operationRequest.Parameters); var newSh = new ServerBaseVdShape(req.shapeId, req.ownerId, req.shapeType, req.tag); switch (req.shapeType) { case VdShapeType.Cluster: _topology.CreateCluster(newSh.Id()); _doc.AddShape(newSh); break; case VdShapeType.FreeForm: _doc.AddShape(newSh); EventLogger.LogAndBroadcast( new DiscCtx(Discussions.ConfigManager.ConnStr), _room, StEvent.FreeDrawingCreated, req.ownerId, _topicId); break; default: _doc.AddShapeAndLock(newSh); break; } _room.Broadcast(peer, operationRequest, sendParameters, (byte)DiscussionEventCode.CreateShapeEvent, BroadcastTo.RoomExceptSelf); //don't include self, we play shape creation locally without continuation _pendingChanges = true; }