KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > archive > io > arc > ARCWriterPool


1 /* ARCWriterPool
2  *
3  * $Id: ARCWriterPool.java,v 1.29 2006/08/25 00:14:29 stack-sf Exp $
4  *
5  * Created on Jan 22, 2004
6  *
7  * Copyright (C) 2004 Internet Archive.
8  *
9  * This file is part of the Heritrix web crawler (crawler.archive.org).
10  *
11  * Heritrix is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser Public License as published by
13  * the Free Software Foundation; either version 2.1 of the License, or
14  * any later version.
15  *
16  * Heritrix is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser Public License
22  * along with Heritrix; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24  */

25 package org.archive.io.arc;
26
27 import java.util.concurrent.atomic.AtomicInteger JavaDoc;
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 JavaDoc(), 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 JavaDoc serial,
62             final WriterPoolSettings settings,
63             final int poolMaximumActive, final int poolMaximumWait) {
64         super(serial, new BasePoolableObjectFactory() {
65             public Object JavaDoc makeObject() throws Exception JavaDoc {
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 JavaDoc arcWriter)
73             throws Exception JavaDoc {
74                 ((WriterPoolMember)arcWriter).close();
75                 super.destroyObject(arcWriter);
76             }
77         }, settings, poolMaximumActive, poolMaximumWait);
78     }
79 }
Popular Tags