forked from ravendb/ravendb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
StorageActionsAccessor.cs
108 lines (94 loc) · 2.54 KB
/
StorageActionsAccessor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//-----------------------------------------------------------------------
// <copyright file="StorageActionsAccessor.cs" company="Hibernating Rhinos LTD">
// Copyright (c) Hibernating Rhinos LTD. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Raven.Abstractions.Exceptions;
using Raven.Abstractions.MEF;
using Raven.Database;
using Raven.Database.Impl;
using Raven.Database.Plugins;
using Raven.Database.Storage;
using Raven.Storage.Managed.Impl;
namespace Raven.Storage.Managed
{
public class StorageActionsAccessor : IStorageActionsAccessor
{
public StorageActionsAccessor(TableStorage storage, IUuidGenerator generator, OrderedPartCollection<AbstractDocumentCodec> documentCodecs, IDocumentCacher documentCacher)
{
General = new GeneralStorageActions(storage);
Attachments = new AttachmentsStorageActions(storage, generator);
Transactions = new TransactionStorageActions(storage, generator, documentCodecs);
Documents = new DocumentsStorageActions(storage, Transactions, generator, documentCodecs, documentCacher);
Indexing = new IndexingStorageActions(storage);
MappedResults = new MappedResultsStorageAction(storage, generator);
Queue = new QueueStorageActions(storage, generator);
Tasks = new TasksStorageActions(storage, generator);
Staleness = new StalenessStorageActions(storage);
}
public ITransactionStorageActions Transactions
{
get;
private set;
}
public IDocumentStorageActions Documents
{
get;
private set;
}
public IQueueStorageActions Queue
{
get;
private set;
}
public ITasksStorageActions Tasks
{
get;
private set;
}
public IStalenessStorageActions Staleness
{
get;
private set;
}
public IAttachmentsStorageActions Attachments
{
get;
private set;
}
public IIndexingStorageActions Indexing
{
get;
private set;
}
public IGeneralStorageActions General
{
get;
private set;
}
public IMappedResultsStorageAction MappedResults
{
get;
private set;
}
public event Action OnCommit;
public bool IsWriteConflict(Exception exception)
{
return exception is ConcurrencyException;
}
[DebuggerNonUserCode]
public void InvokeOnCommit()
{
var handler = OnCommit;
if (handler != null)
handler();
}
public void Dispose()
{
Indexing.Dispose();
}
}
}