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 package org.archive.io.arc;
26
27 import java.util.concurrent.atomic.AtomicInteger;
28
29 import org.apache.commons.pool.BasePoolableObjectFactory;
30 import org.archive.io.WriterPool;
31 import org.archive.io.WriterPoolMember;
32 import org.archive.io.WriterPoolSettings;
33
34
35 /***
36 * A pool of ARCWriters.
37 *
38 * @author stack
39 */
40 public class ARCWriterPool extends WriterPool {
41 /***
42 * Constructor
43 *
44 * @param settings Settings for this pool.
45 * @param poolMaximumActive
46 * @param poolMaximumWait
47 */
48 public ARCWriterPool(final WriterPoolSettings settings,
49 final int poolMaximumActive, final int poolMaximumWait) {
50 this(new AtomicInteger(), settings, poolMaximumActive, poolMaximumWait);
51 }
52
53 /***
54 * Constructor
55 *
56 * @param serial Used to generate unique filename sequences
57 * @param settings Settings for this pool.
58 * @param poolMaximumActive
59 * @param poolMaximumWait
60 */
61 public ARCWriterPool(final AtomicInteger serial,
62 final WriterPoolSettings settings,
63 final int poolMaximumActive, final int poolMaximumWait) {
64 super(serial, new BasePoolableObjectFactory() {
65 public Object makeObject() throws Exception {
66 return new ARCWriter(serial, settings.getOutputDirs(),
67 settings.getPrefix(), settings.getSuffix(),
68 settings.isCompressed(), settings.getMaxSize(),
69 settings.getMetadata());
70 }
71
72 public void destroyObject(Object arcWriter)
73 throws Exception {
74 ((WriterPoolMember)arcWriter).close();
75 super.destroyObject(arcWriter);
76 }
77 }, settings, poolMaximumActive, poolMaximumWait);
78 }
79 }