Ejemplo n.º 1
0
        public bool Commit()
        {
            if (_customMetadata != null)
            {
                if (UploadOperation.customMetadataMutex.WaitOne(1000))
                {
                    try
                    {
                        _customMetadata.ToSWIG(); //Appends the customMetadata in the go-layer to a global field
                        using (SWIG.UplinkError customMetadataError = SWIG.storj_uplink.upload_set_custom_metadata2(_upload))
                        {
                            if (customMetadataError != null && !string.IsNullOrEmpty(customMetadataError.message))
                            {
                                _errorMessage = customMetadataError.message;
                                return(false);
                            }
                        }
                    }
                    finally
                    {
                        UploadOperation.customMetadataMutex.ReleaseMutex();
                    }
                }
            }

            using (SWIG.UplinkError commitError = SWIG.storj_uplink.uplink_upload_commit(_upload))
            {
                if (commitError != null && !string.IsNullOrEmpty(commitError.message))
                {
                    _errorMessage = commitError.message;
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        public async Task <UploadsList> ListUploadsAsync(string bucketName, ListUploadOptions listUploadOptions)
        {
            var listUploadsOptionsSWIG = listUploadOptions.ToSWIG();

            _listUploadsOptions.Add(listUploadsOptionsSWIG);

            using (SWIG.UplinkUploadIterator uploadIterator = await Task.Run(() => SWIG.storj_uplink.uplink_list_uploads(_access._project, bucketName, listUploadsOptionsSWIG)).ConfigureAwait(false))
            {
                using (SWIG.UplinkError error = SWIG.storj_uplink.uplink_upload_iterator_err(uploadIterator))
                {
                    if (error != null && !string.IsNullOrEmpty(error.message))
                    {
                        throw new UploadsListException(error.message);
                    }
                }

                UploadsList uploadsList = new UploadsList();

                while (SWIG.storj_uplink.uplink_upload_iterator_next(uploadIterator))
                {
                    using (var uploadInfo = SWIG.storj_uplink.uplink_upload_iterator_item(uploadIterator))
                    {
                        uploadsList.Items.Add(uplink.NET.Models.UploadInfo.FromSWIG(uploadInfo));
                    }
                }
                return(uploadsList);
            }
        }
Ejemplo n.º 3
0
        public async Task <BucketList> ListBucketsAsync(ListBucketsOptions listBucketsOptions)
        {
            var listBucketsOptionsSWIG = listBucketsOptions.ToSWIG();

            _listOptions.Add(listBucketsOptionsSWIG);
            using (SWIG.UplinkBucketIterator bucketIterator = await Task.Run(() => SWIG.storj_uplink.uplink_list_buckets(_access._project, listBucketsOptionsSWIG)).ConfigureAwait(false))
            {
                using (SWIG.UplinkError error = SWIG.storj_uplink.uplink_bucket_iterator_err(bucketIterator))
                {
                    if (error != null && !string.IsNullOrEmpty(error.message))
                    {
                        throw new BucketListException(error.message);
                    }
                }

                BucketList bucketList = new BucketList();

                while (SWIG.storj_uplink.uplink_bucket_iterator_next(bucketIterator))
                {
                    var bucket = SWIG.storj_uplink.uplink_bucket_iterator_item(bucketIterator);
                    bucketList.Items.Add(Bucket.FromSWIG(bucket, _access._project));
                }

                return(bucketList);
            }
        }
Ejemplo n.º 4
0
        public async Task <ObjectList> ListObjectsAsync(Bucket bucket, ListObjectsOptions listObjectsOptions)
        {
            var listObjectsOptionsSWIG = listObjectsOptions.ToSWIG();

            _listOptions.Add(listObjectsOptionsSWIG);

            using (SWIG.UplinkObjectIterator objectIterator = await Task.Run(() => SWIG.storj_uplink.uplink_list_objects(_access._project, bucket.Name, listObjectsOptionsSWIG)))
            {
                using (SWIG.UplinkError error = SWIG.storj_uplink.uplink_object_iterator_err(objectIterator))
                {
                    if (error != null && !string.IsNullOrEmpty(error.message))
                    {
                        throw new BucketListException(error.message);
                    }
                }

                ObjectList objectList = new ObjectList();

                while (SWIG.storj_uplink.uplink_object_iterator_next(objectIterator))
                {
                    using (var objectResult = SWIG.storj_uplink.uplink_object_iterator_item(objectIterator))
                    {
                        objectList.Items.Add(uplink.NET.Models.Object.FromSWIG(objectResult, true));
                    }
                }
                return(objectList);
            }
        }
Ejemplo n.º 5
0
        public async Task <UploadPartsList> ListUploadPartsAsync(string bucketName, string objectKey, string uploadId, ListUploadPartsOptions listUploadPartOptions)
        {
            var listUploadPartsOptionsSWIG = listUploadPartOptions.ToSWIG();

            _listUploadPartsOptions.Add(listUploadPartsOptionsSWIG);

            using (SWIG.UplinkPartIterator partIterator = await Task.Run(() => SWIG.storj_uplink.uplink_list_upload_parts(_access._project, bucketName, objectKey, uploadId, listUploadPartsOptionsSWIG)).ConfigureAwait(false))
            {
                using (SWIG.UplinkError error = SWIG.storj_uplink.uplink_part_iterator_err(partIterator))
                {
                    if (error != null && !string.IsNullOrEmpty(error.message))
                    {
                        throw new UploadPartsListException(error.message);
                    }
                }

                UploadPartsList uploadPartList = new UploadPartsList();

                while (SWIG.storj_uplink.uplink_part_iterator_next(partIterator))
                {
                    using (var partUploadResult = SWIG.storj_uplink.uplink_part_iterator_item(partIterator))
                    {
                        uploadPartList.Items.Add(uplink.NET.Models.Part.FromSWIG(partUploadResult));
                    }
                }
                return(uploadPartList);
            }
        }
Ejemplo n.º 6
0
 public void Dispose()
 {
     if (_project != null)
     {
         using (SWIG.UplinkError closeError = SWIG.storj_uplink.uplink_close_project(_project))
         {
             _project.Dispose();
             _project = null;
         }
     }
 }
Ejemplo n.º 7
0
 public async Task MoveObjectAsync(Bucket oldBucket, string oldKey, Bucket newBucket, string newKey)
 {
     using (var options = new SWIG.UplinkMoveObjectOptions())
         using (SWIG.UplinkError error = await Task.Run(() => SWIG.storj_uplink.uplink_move_object(_access._project, oldBucket.Name, oldKey, newBucket.Name, newKey, options)))
         {
             if (error != null && !string.IsNullOrEmpty(error.message))
             {
                 throw new ObjectNotFoundException(error.message);
             }
         }
 }
Ejemplo n.º 8
0
        public async Task UpdateObjectMetadataAsync(Bucket bucket, string targetPath, CustomMetadata metadata)
        {
            await UploadOperation.customMetadataSemaphore.WaitAsync();

            try
            {
                metadata.ToSWIG(); //Appends the customMetadata in the go-layer to a global field
                using (var options = new SWIG.UplinkUploadObjectMetadataOptions())
                    using (SWIG.UplinkError error = await Task.Run(() => SWIG.storj_uplink.uplink_update_object_metadata2(_access._project, bucket.Name, targetPath, options)).ConfigureAwait(false))
                    {
                        if (error != null && !string.IsNullOrEmpty(error.message))
                        {
                            throw new CouldNotUpdateObjectMetadataException(error.message);
                        }
                    }
            }
            finally
            {
                UploadOperation.customMetadataSemaphore.Release();
            }
        }
Ejemplo n.º 9
0
 public void Dispose()
 {
     if (_project != null)
     {
         SWIG.UplinkError closeError = SWIG.storj_uplink.uplink_close_project(_project);
         SWIG.storj_uplink.uplink_free_error(closeError);
         _project.Dispose();
         _project = null;
     }
     if (_accessResult != null)
     {
         SWIG.storj_uplink.uplink_free_access_result(_accessResult);
         _accessResult.Dispose();
         _accessResult = null;
     }
     if (_projectResult != null)
     {
         SWIG.storj_uplink.uplink_free_project_result(_projectResult);
         _projectResult.Dispose();
         _projectResult = null;
     }
 }
Ejemplo n.º 10
0
 internal void ToSWIG(SWIG.UplinkUpload upload)
 {
     if (CustomMetadata != null)
     {
         UploadOperation.customMetadataSemaphore.Wait();
         try
         {
             CustomMetadata.ToSWIG(); //Appends the customMetadata in the go-layer to a global field
             using (SWIG.UplinkError customMetadataError = SWIG.storj_uplink.upload_set_custom_metadata2(upload))
             {
                 if (customMetadataError != null && !string.IsNullOrEmpty(customMetadataError.message))
                 {
                     throw new SetCustomMetadataFailedException(customMetadataError.message);
                 }
             }
         }
         finally
         {
             UploadOperation.customMetadataSemaphore.Release();
         }
     }
 }
Ejemplo n.º 11
0
        private void DoUpload()
        {
            try
            {
                if (_byteStreamToUpload != null)
                {
                    Running = true;
                    int bytesToUploadCount = 0;
                    do
                    {
                        byte[] bytesToUpload = new byte[262144];

                        bytesToUploadCount = _byteStreamToUpload.Read(bytesToUpload, 0, 262144);
                        if (bytesToUploadCount > 0)
                        {
                            byte[] targetArray = bytesToUpload.Take((int)bytesToUploadCount).ToArray();
                            fixed(byte *arrayPtr = targetArray)
                            {
                                using (SWIG.UplinkWriteResult sentResult = SWIG.storj_uplink.uplink_upload_write(_upload, new SWIG.SWIGTYPE_p_void(new IntPtr(arrayPtr), true), (uint)bytesToUploadCount))
                                {
                                    if (sentResult.error != null && !string.IsNullOrEmpty(sentResult.error.message))
                                    {
                                        _errorMessage = sentResult.error.message;
                                        Failed        = true;
                                        Running       = false;
                                        UploadOperationEnded?.Invoke(this);
                                        return;
                                    }
                                    else
                                    {
                                        BytesSent += sentResult.bytes_written;
                                    }
                                }
                                if (_cancelled)
                                {
                                    using (SWIG.UplinkError abortError = SWIG.storj_uplink.uplink_upload_abort(_upload))
                                    {
                                        if (abortError != null && !string.IsNullOrEmpty(abortError.message))
                                        {
                                            Failed        = true;
                                            _errorMessage = abortError.message;
                                        }
                                        else
                                        {
                                            Cancelled = true;
                                        }
                                    }

                                    Running = false;
                                    UploadOperationEnded?.Invoke(this);
                                    return;
                                }
                                UploadOperationProgressChanged?.Invoke(this);
                                if (!string.IsNullOrEmpty(_errorMessage))
                                {
                                    Failed = true;
                                    UploadOperationEnded?.Invoke(this);
                                    return;
                                }
                            }
                        }
                    } while (bytesToUploadCount > 0);

                    if (_customMetadata != null)
                    {
                        if (customMetadataMutex.WaitOne(1000))
                        {
                            try
                            {
                                _customMetadata.ToSWIG(); //Appends the customMetadata in the go-layer to a global field
                                using (SWIG.UplinkError customMetadataError = SWIG.storj_uplink.upload_set_custom_metadata2(_upload))
                                {
                                    if (customMetadataError != null && !string.IsNullOrEmpty(customMetadataError.message))
                                    {
                                        _errorMessage = customMetadataError.message;
                                        Failed        = true;
                                        UploadOperationEnded?.Invoke(this);
                                        return;
                                    }
                                }
                            }
                            finally
                            {
                                customMetadataMutex.ReleaseMutex();
                            }
                        }
                    }

                    using (SWIG.UplinkError commitError = SWIG.storj_uplink.uplink_upload_commit(_upload))
                    {
                        if (commitError != null && !string.IsNullOrEmpty(commitError.message))
                        {
                            _errorMessage = commitError.message;
                            Failed        = true;
                            UploadOperationEnded?.Invoke(this);
                            return;
                        }
                    }
                }
                if (!string.IsNullOrEmpty(_errorMessage))
                {
                    Failed = true;
                    UploadOperationEnded?.Invoke(this);
                    return;
                }
                Completed = true;
                UploadOperationEnded?.Invoke(this);
            }
            catch (Exception ex)
            {
                Failed        = true;
                _errorMessage = ex.Message;
                return;
            }
            finally
            {
                Running = false;
                UploadOperationEnded?.Invoke(this);
            }
        }
Ejemplo n.º 12
0
        private void DoDownload()
        {
            Running = true;
            while (BytesReceived < TotalBytes)
            {
                var tenth = _bytesToDownload.Length / 10;
                if (TotalBytes - BytesReceived > tenth)
                {
                    //Fetch next bytes in batch
                    byte[] part = new byte[tenth];
                    fixed(byte *arrayPtr = part)
                    {
                        using (SWIG.UplinkReadResult readResult = SWIG.storj_uplink.uplink_download_read(_download, new SWIG.SWIGTYPE_p_void(new IntPtr(arrayPtr), true), (uint)tenth))
                        {
                            if (readResult.error != null && !string.IsNullOrEmpty(readResult.error.message))
                            {
                                _errorMessage = readResult.error.message;
                                Failed        = true;
                                Running       = false;
                                DownloadOperationEnded?.Invoke(this);
                                return;
                            }
                            if (readResult.bytes_read != 0)
                            {
                                Array.Copy(part, 0, _bytesToDownload, (long)BytesReceived, readResult.bytes_read);
                                BytesReceived += readResult.bytes_read;
                            }
                        }
                    }
                }
                else
                {
                    //Fetch only the remaining bytes
                    var    remaining = TotalBytes - BytesReceived;
                    byte[] part      = new byte[remaining];
                    fixed(byte *arrayPtr = part)
                    {
                        using (SWIG.UplinkReadResult readResult = SWIG.storj_uplink.uplink_download_read(_download, new SWIG.SWIGTYPE_p_void(new IntPtr(arrayPtr), true), (uint)remaining))
                        {
                            if (readResult.error != null && !string.IsNullOrEmpty(readResult.error.message))
                            {
                                _errorMessage = readResult.error.message;
                                Failed        = true;
                                Running       = false;
                                DownloadOperationEnded?.Invoke(this);
                                return;
                            }
                            if (readResult.bytes_read != 0)
                            {
                                Array.Copy(part, 0, _bytesToDownload, (long)BytesReceived, readResult.bytes_read);
                                BytesReceived += readResult.bytes_read;
                            }
                        }
                    }
                }

                if (_cancelled)
                {
                    using (SWIG.UplinkError cancelError = SWIG.storj_uplink.uplink_close_download(_download))
                    {
                        if (cancelError != null && !string.IsNullOrEmpty(cancelError.message))
                        {
                            _errorMessage = cancelError.message;
                            Failed        = true;
                        }
                        else
                        {
                            Cancelled = true;
                        }
                    }

                    Running = false;
                    DownloadOperationEnded?.Invoke(this);
                    return;
                }
                DownloadOperationProgressChanged?.Invoke(this);
                if (!string.IsNullOrEmpty(_errorMessage))
                {
                    Failed  = true;
                    Running = false;
                    DownloadOperationEnded?.Invoke(this);
                    return;
                }
            }

            using (SWIG.UplinkError closeError = SWIG.storj_uplink.uplink_close_download(_download))
            {
                if (closeError != null && !string.IsNullOrEmpty(closeError.message))
                {
                    _errorMessage = closeError.message;
                    Failed        = true;
                    Running       = false;
                    DownloadOperationEnded?.Invoke(this);
                    return;
                }
            }

            Completed = true;
            Running   = false;
            DownloadOperationEnded?.Invoke(this);
        }