예제 #1
0
        internal bool Delete(
            RequestMetadata md,
            ContainerClient client,
            string objectName,
            out ErrorCode error)
        {
            error = ErrorCode.None;
            if (md == null)
            {
                throw new ArgumentNullException(nameof(md));
            }
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }
            if (String.IsNullOrEmpty(objectName))
            {
                throw new ArgumentNullException(nameof(objectName));
            }
            string header = _Header + "Delete " + client.Container.UserGUID + "/" + client.Container.Name + "/" + objectName + " ";

            if (!_Locks.AddWriteLock(md))
            {
                _Logging.Warn(header + "unable to add write lock");
                return(false);
            }

            if (!client.RemoveObject(objectName, out error))
            {
                _Logging.Warn(header + "unable to remove object: " + error.ToString());
                _Locks.RemoveWriteLock(md);
                return(false);
            }
            else
            {
                string logData =
                    "Source: " + md.Http.Request.SourceIp + ":" + md.Http.Request.SourcePort + " " +
                    "User: "******"deleted object");
                return(true);
            }
        }