Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
OutOfCoreDataAccessor |
|
| 1.0;1 | ||||
OutOfCoreDataAccessor$DataInputWrapper |
|
| 1.0;1 | ||||
OutOfCoreDataAccessor$DataOutputWrapper |
|
| 1.0;1 |
1 | /* | |
2 | * Licensed to the Apache Software Foundation (ASF) under one | |
3 | * or more contributor license agreements. See the NOTICE file | |
4 | * distributed with this work for additional information | |
5 | * regarding copyright ownership. The ASF licenses this file | |
6 | * to you under the Apache License, Version 2.0 (the | |
7 | * "License"); you may not use this file except in compliance | |
8 | * with the License. You may obtain a copy of the License at | |
9 | * | |
10 | * http://www.apache.org/licenses/LICENSE-2.0 | |
11 | * | |
12 | * Unless required by applicable law or agreed to in writing, software | |
13 | * distributed under the License is distributed on an "AS IS" BASIS, | |
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 | * See the License for the specific language governing permissions and | |
16 | * limitations under the License. | |
17 | */ | |
18 | ||
19 | package org.apache.giraph.ooc.persistence; | |
20 | ||
21 | import java.io.DataInput; | |
22 | import java.io.DataOutput; | |
23 | import java.io.IOException; | |
24 | ||
25 | /** | |
26 | * Interface representing data accessor object (DAO) used as persistence layer | |
27 | * in out-of-core mechanism. | |
28 | * Note: any class implementing this interface should have one and only one | |
29 | * constructor taking one and only one argument of type | |
30 | * <code>ImmutableClassesGiraphConfiguration</code> | |
31 | */ | |
32 | public interface OutOfCoreDataAccessor { | |
33 | /** Initialize the DAO */ | |
34 | void initialize(); | |
35 | ||
36 | /** Shut down the DAO */ | |
37 | void shutdown(); | |
38 | ||
39 | /** | |
40 | * @return the number of threads involved in data persistence | |
41 | */ | |
42 | int getNumAccessorThreads(); | |
43 | ||
44 | /** | |
45 | * Prepare a wrapper containing <code>DataInput</code> representation for a | |
46 | * given thread involved in persistence for a given index chain for data. | |
47 | * | |
48 | * @param threadId id of the thread involved in persistence | |
49 | * @param index index chain of the data to access the serialized data form | |
50 | * @return the wrapper for <code>DataInput</code> representation of data | |
51 | * @throws IOException | |
52 | */ | |
53 | DataInputWrapper prepareInput(int threadId, DataIndex index) | |
54 | throws IOException; | |
55 | ||
56 | /** | |
57 | * Prepare a wrapper containing <code>DataOutput</code> representation for a | |
58 | * given thread involved in persistence for a given index chain for data. | |
59 | * | |
60 | * @param threadId id of the thread involved in persistence | |
61 | * @param index index chain of the data to access the serialized data form | |
62 | * @param shouldAppend whether the <code>DataOutput</code> should be used for | |
63 | * appending to already existing data for the given index | |
64 | * or the <code>DataOutput</code> should create new | |
65 | * instance to store serialized data | |
66 | * @return the wrapper for <code>DataOutput</code> representation of data | |
67 | * @throws IOException | |
68 | */ | |
69 | DataOutputWrapper prepareOutput(int threadId, DataIndex index, | |
70 | boolean shouldAppend) throws IOException; | |
71 | ||
72 | /** | |
73 | * Whether the data for the given thread and index chain exists? | |
74 | * | |
75 | * @param threadId id of the thread involved in persistence | |
76 | * @param index index chain used to access the data | |
77 | * @return True if the data exists for the given index chain for the given | |
78 | * thread, False otherwise | |
79 | */ | |
80 | boolean dataExist(int threadId, DataIndex index); | |
81 | ||
82 | /** Interface to wrap <code>DataInput</code> */ | |
83 | interface DataInputWrapper { | |
84 | /** | |
85 | * @return the <code>DataInput</code>, should return the same instance | |
86 | * every time it's called (not start from the beginning) | |
87 | */ | |
88 | DataInput getDataInput(); | |
89 | ||
90 | /** | |
91 | * Finalize and close the <code>DataInput</code> used for persistence. | |
92 | * | |
93 | * @param deleteOnClose whether the source of <code>DataInput</code> | |
94 | * should be deleted on closing/finalizing | |
95 | * @return number of bytes read from <code>DataInput</code> since it was | |
96 | * opened | |
97 | */ | |
98 | long finalizeInput(boolean deleteOnClose); | |
99 | } | |
100 | ||
101 | /** Interface to warp <code>DataOutput</code> */ | |
102 | interface DataOutputWrapper { | |
103 | /** | |
104 | * @return the <code>DataOutput</code> | |
105 | */ | |
106 | DataOutput getDataOutput(); | |
107 | ||
108 | /** | |
109 | * Finalize and close the <code>DataOutput</code> used for persistence. | |
110 | * | |
111 | * @return number of bytes written to <code>DataOutput</code> since it was | |
112 | * opened | |
113 | */ | |
114 | long finalizeOutput(); | |
115 | } | |
116 | } |