View Javadoc
1   /*
2    * This file is part of Waarp Project (named also Waarp or GG).
3    *
4    *  Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5    *  tags. See the COPYRIGHT.txt in the distribution for a full listing of
6    * individual contributors.
7    *
8    *  All Waarp Project is free software: you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License, or (at your
11   * option) any later version.
12   *
13   * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14   * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15   * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License along with
18   * Waarp . If not, see <http://www.gnu.org/licenses/>.
19   */
20  
21  /*
22   * Licensed under the Apache License, Version 2.0 (the "License");
23   * you may not use this file except in compliance with the License.
24   * You may obtain a copy of the License at
25   *
26   *     http://www.apache.org/licenses/LICENSE-2.0
27   *
28   * Unless required by applicable law or agreed to in writing, software
29   * distributed under the License is distributed on an "AS IS" BASIS,
30   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31   * See the License for the specific language governing permissions and
32   * limitations under the License.
33   */
34  package org.waarp.compress;
35  
36  import java.io.File;
37  
38  public interface CompressorCodec {
39    /**
40     * @param uncompressedSize
41     *
42     * @return the maximum size for Compressed length
43     */
44    int maxCompressedLength(int uncompressedSize);
45  
46    /**
47     * @return the compressed byte array
48     */
49    byte[] compress(byte[] input, final int inputLength)
50        throws MalformedInputException;
51  
52    /**
53     * @param input
54     * @param inputLength
55     * @param output
56     * @param maxOutputLength
57     *
58     * @return the size of ouput
59     *
60     * @throws MalformedInputException
61     */
62    int compress(final byte[] input, final int inputLength, final byte[] output,
63                 final int maxOutputLength) throws MalformedInputException;
64  
65    /**
66     * Compress the file input to the file output
67     *
68     * @param input
69     * @param output
70     *
71     * @return the new length
72     *
73     * @throws MalformedInputException
74     */
75    long compress(final File input, final File output)
76        throws MalformedInputException;
77  
78    /**
79     * @return the decompressed byte array
80     */
81    byte[] decompress(byte[] input, final int length)
82        throws MalformedInputException;
83  
84    /**
85     * @param input
86     * @param inputLength
87     * @param output
88     * @param maxOutputLength
89     *
90     * @return the size of output
91     *
92     * @throws MalformedInputException
93     */
94    int decompress(final byte[] input, final int inputLength, final byte[] output,
95                   final int maxOutputLength) throws MalformedInputException;
96  
97    /**
98     * Decompress the file input to the file output
99     *
100    * @param input
101    * @param output
102    *
103    * @return the new length
104    *
105    * @throws MalformedInputException
106    */
107   long decompress(final File input, final File output)
108       throws MalformedInputException;
109 
110   /**
111    * @param input
112    * @param length
113    *
114    * @return the size of the decompressed array, 0 if unknown
115    */
116   int getDecompressedSize(final byte[] input, final int length);
117 
118 
119 }