Esempio n. 1
1
        public async Task AddObjectToUploadQueueAsync(string bucketName, string key, string accessGrant, Stream stream, string identifier, CustomMetadata customMetadata)
        {
            await InitAsync().ConfigureAwait(false);

            var entry = new UploadQueueEntry();

            entry.AccessGrant    = accessGrant;
            entry.Identifier     = identifier;
            entry.BucketName     = bucketName;
            entry.Key            = key;
            entry.TotalBytes     = (int)stream.Length;
            entry.BytesCompleted = 0;
            if (customMetadata != null)
            {
                entry.CustomMetadataJson = JsonSerializer.Serialize(customMetadata);
            }

            var entryData = new UploadQueueEntryData();

            entryData.Bytes = new byte[stream.Length];
            stream.Read(entryData.Bytes, 0, (int)stream.Length);

            await _connection.RunInTransactionAsync((SQLiteConnection transaction) =>
            {
                transaction.Insert(entry);
                entryData.UploadQueueEntryId = entry.Id;
                transaction.Insert(entryData);
            });

            ProcessQueueInBackground();

            UploadQueueChangedEvent?.Invoke(QueueChangeType.EntryAdded, entry);
        }
Esempio n. 2
0
        public async Task AddObjectToUploadQueueAsync(string bucketName, string key, string accessGrant, Stream stream, string identifier)
        {
            await InitAsync();

            var entry = new UploadQueueEntry();

            entry.AccessGrant    = accessGrant;
            entry.Identifier     = identifier;
            entry.BucketName     = bucketName;
            entry.Key            = key;
            entry.TotalBytes     = (int)stream.Length;
            entry.BytesCompleted = 0;

            await _connection.InsertAsync(entry);

            var entryData = new UploadQueueEntryData();

            entryData.UploadQueueEntryId = entry.Id;
            entryData.Bytes = new byte[stream.Length];
            var read = stream.Read(entryData.Bytes, 0, (int)stream.Length);

            await _connection.InsertAsync(entryData);

            ProcessQueueInBackground();

            UploadQueueChangedEvent?.Invoke(QueueChangeType.EntryAdded, entry);
        }