• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Licensed to the Apache Software Foundation (ASF) under one or more
3  *  contributor license agreements.  See the NOTICE file distributed with
4  *  this work for additional information regarding copyright ownership.
5  *  The ASF licenses this file to You under the Apache License, Version 2.0
6  *  (the "License"); you may not use this file except in compliance with
7  *  the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  */
18 package org.apache.commons.compress.parallel;
19 
20 import java.io.Closeable;
21 import java.io.IOException;
22 import java.io.InputStream;
23 
24 /**
25  * <p>Store intermediate payload in a scatter-gather scenario.
26  * Multiple threads write their payload to a backing store, which can
27  * subsequently be reversed to an {@link InputStream} to be used as input in the
28  * gather phase.</p>
29  *
30  * <p>It is the responsibility of the allocator of an instance of this class
31  * to close this. Closing it should clear off any allocated structures
32  * and preferably delete files.</p>
33  *
34  * @since 1.10
35  */
36 public interface ScatterGatherBackingStore extends Closeable {
37 
38     /**
39      * An input stream that contains the scattered payload
40      *
41      * @return An InputStream, should be closed by the caller of this method.
42      * @throws IOException when something fails
43      */
getInputStream()44     InputStream getInputStream() throws IOException;
45 
46     /**
47      * Writes a piece of payload.
48      *
49      * @param data the data to write
50      * @param offset offset inside data to start writing from
51      * @param length the amount of data to write
52      * @throws IOException when something fails
53      */
writeOut(byte[] data, int offset, int length)54     void writeOut(byte[] data, int offset, int length) throws IOException;
55 
56     /**
57      * Closes this backing store for further writing.
58      * @throws IOException when something fails
59      */
closeForWriting()60     void closeForWriting() throws IOException;
61 }
62