/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_apache_tomcat_modules_server_JNIConnectionHandler */

#ifndef _Included_org_apache_tomcat_modules_server_JNIConnectionHandler
#define _Included_org_apache_tomcat_modules_server_JNIConnectionHandler
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    getNumberOfHeaders
 * Signature: (JJ)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_getNumberOfHeaders
  (JNIEnv *, jobject, jlong, jlong);

/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    read
 * Signature: (JJ[BII)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_read
  (JNIEnv *, jobject, jlong, jlong, jbyteArray, jint, jint);

/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    readEnvironment
 * Signature: (JJ[Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_readEnvironment
  (JNIEnv *, jobject, jlong, jlong, jobjectArray);

/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    readHeaders
 * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_readHeaders
  (JNIEnv *, jobject, jlong, jlong, jobjectArray, jobjectArray);

/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    startReasponse
 * Signature: (JJILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_startReasponse
  (JNIEnv *, jobject, jlong, jlong, jint, jstring, jobjectArray, jobjectArray, jint);

/*
 * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler
 * Method:    write
 * Signature: (JJ[BII)I
 */
JNIEXPORT jint JNICALL Java_org_apache_tomcat_modules_server_JNIConnectionHandler_write
  (JNIEnv *, jobject, jlong, jlong, jbyteArray, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
