private MethodReturnValue CheckAccess(Item item)
        {
            if (item.Disposed)
            {
                return(MethodReturnValue.New((int)ReturnCode.ItemNotFound, "ItemNotFound"));
            }

            if (((Item)item).GrantWriteAccess(this))
            {
                return(MethodReturnValue.Ok);
            }

            return(MethodReturnValue.New((int)ReturnCode.ItemAccessDenied, "ItemAccessDenied"));
        }
예제 #2
0
        /// <summary>
        /// Expects operation CreateWorld and adds a new World to the WorldCache.
        /// </summary>
        public OperationResponse OperationCreateWorld(PeerBase peer, OperationRequest request)
        {
            var operation = new CreateWorld(peer.Protocol, request);

            if (!operation.IsValid)
            {
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (int)ReturnCode.InvalidOperationParameter, DebugMessage = operation.GetErrorMessage()
                });
            }

            World             world;
            MethodReturnValue result = WorldCache.Instance.TryCreate(
                operation.WorldName, operation.BoundingBox, operation.TileDimensions, out world)
                                           ? MethodReturnValue.Ok
                                           : MethodReturnValue.New((int)ReturnCode.WorldAlreadyExists, "WorldAlreadyExists");

            return(operation.GetOperationResponse(result));
        }