Home | History | Annotate | Download | only in native
      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 #ifndef ZIP_UTILITIES_H_included
     19 #define ZIP_UTILITIES_H_included
     20 
     21 #include <cstdint>
     22 #include <memory>
     23 #include "jni.h"
     24 #include "zlib.h"
     25 
     26 class NativeZipStream {
     27 public:
     28     std::unique_ptr<jbyte[]> input;
     29     int inCap;
     30     z_stream stream;
     31     uint64_t totalIn;
     32     uint64_t totalOut;
     33 
     34     NativeZipStream();
     35     ~NativeZipStream();
     36     void setDictionary(JNIEnv* env, jbyteArray javaDictionary, int off, int len, bool inflate);
     37     void setInput(JNIEnv* env, jbyteArray buf, jint off, jint len);
     38 
     39 private:
     40     std::unique_ptr<jbyte[]> mDict;
     41 
     42     // Disallow copy and assignment.
     43     NativeZipStream(const NativeZipStream&);
     44     void operator=(const NativeZipStream&);
     45 };
     46 
     47 NativeZipStream* toNativeZipStream(jlong address);
     48 
     49 void throwExceptionForZlibError(JNIEnv* env, const char* exceptionClassName, int error,
     50         NativeZipStream* stream);
     51 
     52 #endif  // ZIP_UTILITIES_H_included
     53