Batch() private method

private Batch ( Action action ) : void
action Action
return void
Ejemplo n.º 1
0
		protected StorageStream(TransactionalStorage transactionalStorage, string fileName,
		                        StorageStreamAccess storageStreamAccess,
		                        NameValueCollection metadata, IndexStorage indexStorage, StorageOperationsTask operations)
		{
			TransactionalStorage = transactionalStorage;
			StorageStreamAccess = storageStreamAccess;
			Name = fileName;

			switch (storageStreamAccess)
			{
				case StorageStreamAccess.Read:
					TransactionalStorage.Batch(accessor => fileHeader = accessor.ReadFile(fileName));
					if (fileHeader.TotalSize == null)
					{
						throw new FileNotFoundException("File is not uploaded yet");
					}
					Metadata = fileHeader.Metadata;
					Seek(0, SeekOrigin.Begin);
					break;
				case StorageStreamAccess.CreateAndWrite:
					TransactionalStorage.Batch(accessor =>
						                           {
							                           operations.IndicateFileToDelete(fileName);
							                           accessor.PutFile(fileName, null, metadata);
							                           indexStorage.Index(fileName, metadata);
						                           });
					Metadata = metadata;
					break;
				default:
					throw new ArgumentOutOfRangeException("storageStreamAccess", storageStreamAccess, "Unknown value");
			}
		}
		protected SynchronizationWorkItem(string fileName, string sourceServerUrl, TransactionalStorage storage)
		{
			Storage = storage;
			FileName = fileName;

			FileAndPages fileAndPages = null;
			Storage.Batch(accessor => fileAndPages = accessor.GetFile(fileName, 0, 0));
			FileMetadata = fileAndPages.Metadata;
			ServerInfo = new ServerInfo
				             {
					             Id = Storage.Id,
					             Url = sourceServerUrl
				             };

			conflictDetector = new ConflictDetector();
			conflictResolver = new ConflictResolver();
		}