You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2005/01/14 14:47:23 UTC

cvs commit: jakarta-tomcat-connectors/jni/native/include tcn.h tcn_version.h

mturk       2005/01/14 05:47:23

  Added:       jni/native/include tcn.h tcn_version.h
  Log:
  Initial upload
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-connectors/jni/native/include/tcn.h
  
  Index: tcn.h
  ===================================================================
  /* Copyright 2000-2004 The Apache Software Foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  
  #ifndef TCN_H
  #define TCN_H
  
  #include <jni.h>
  
  #ifdef min
  #undef min
  #endif
  #define min(a, b)  ((a) < (b) ? (a) : (b))
  
  #define APR_MAX_IOVEC_SIZE 1024
  
  #define TCN_FINFO_CLASS "org/apache/tomcat/jni/FileInfo"
  #define TCN_AINFO_CLASS "org/apache/tomcat/jni/Sockaddr"
  #define TCN_ERROR_CLASS "org/apache/tomcat/jni/Error"
  
  #define UNREFERENCED(P) (P)
  #define P2J(P)          ((jlong)(long)(void *)P)
  #define J2P(P, T)       ((T)(void *)(long)P)
  /* On stack buffer size */
  #define TCN_BUFFER_SZ   8192
  #define TCN_STDARGS     JNIEnv *e, jobject o
  #define UNREFERENCED_STDARGS    { e; o; }
  
  #define TCN_IMPLEMENT_CALL(RT, CL, FN)  \
      JNIEXPORT RT JNICALL Java_org_apache_tomcat_jni_##CL##_##FN
  
  
  void tcn_Throw(JNIEnv *env, const char *cname, const char *msg);
  void tcn_ThrowException(JNIEnv *env, const char *msg);
  void tcn_ThrowAPRException(JNIEnv *env, apr_status_t err);
  jstring tcn_new_string(JNIEnv *env, const char *str);
  char *tcn_get_string(JNIEnv *env, jstring jstr);
  char *tcn_dup_string(JNIEnv *env, jstring jstr);
  apr_status_t tcn_load_finfo_class(JNIEnv *env);
  apr_status_t tcn_load_ainfo_class(JNIEnv *env);
  
  #define J2S(V)  c##V
  #define J2L(V)  p##V
  
  #define J2T(T) (apr_time_t)((T))
  
  #if 1
  #define TCN_BEGIN_MACRO     {
  #define TCN_END_MACRO       } (void *)(0)
  #else
  #define TCN_BEGIN_MACRO     do {
  #define TCN_END_MACRO       } while (0)
  #endif
  
  #define TCN_ALLOC_CSTRING(V)     \
      const char *c##V = V ? (const char *)((*e)->GetStringUTFChars(e, V, 0)) : NULL
  
  #define TCN_FREE_CSTRING(V)      \
      if (c##V) (*e)->ReleaseStringUTFChars(e, V, c##V)
  
  #define TCN_ALLOC_JSTRING(V)     \
      char *c##V = tcn_get_string(e, (V))
  
  #define AJP_TO_JSTRING(V)   (*e)->NewStringUTF((e), (V))
  
  #define TCN_FREE_JSTRING(V)      \
      TCN_BEGIN_MACRO              \
          if (c##V)                \
              free(c##V);          \
      TCN_END_MACRO
  
  #define TCN_THROW_IF_ERR(x, r)                  \
      TCN_BEGIN_MACRO                             \
          apr_status_t R = (x);                   \
          if (R != APR_SUCCESS) {                 \
              tcn_ThrowAPRException(e, R);        \
              (r) = 0;                            \
              goto cleanup;                       \
          }                                       \
      TCN_END_MACRO
  
  #define TCN_THROW_OS_ERROR(E)   \
      tcn_ThrowAPRException((E), apr_get_os_error())
  
  #define TCN_LOAD_CLASS(E, C, N, R)                  \
      TCN_BEGIN_MACRO                                 \
          jclass _##C = (*(E))->FindClass((E), N);    \
          if (_##C == NULL) {                         \
              (*(E))->ExceptionClear((E));            \
              return R;                               \
          }                                           \
          C = (*(E))->NewGlobalRef((E), _##C);        \
          (*(E))->DeleteLocalRef((E), _##C);          \
      TCN_END_MACRO
  
  #define TCN_UNLOAD_CLASS(E, C)                      \
          (*(E))->DeleteGlobalRef((E), (C))
  
  #define TCN_IS_NULL(E, O)                           \
          ((*(E))->IsSameObject((E), (O), NULL) == JNI_TRUE)
  
  #define TCN_GET_METHOD(E, C, M, N, S, R)            \
      TCN_BEGIN_MACRO                                 \
          M = (*(E))->GetMethodID((E), C, N, S);      \
          if (M == NULL) {                            \
              return R;                               \
          }                                           \
      TCN_END_MACRO
  
  
  struct tcn_callback {
      JNIEnv      *env;
      jobject     obj;
      jmethodID   mid;
      void        *opaque;
  };
  
  typedef struct tcn_callback tcn_callback_t;
  
  
  #endif /* TCN_H */
  
  
  
  1.1                  jakarta-tomcat-connectors/jni/native/include/tcn_version.h
  
  Index: tcn_version.h
  ===================================================================
  /* Copyright 2000-2004 The Apache Software Foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #ifndef TCN_VERSION_H
  #define TCN_VERSION_H
  
  #include "apr_version.h"
  
  #include "tcn.h"
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /**
   * @file tcn_version.h
   * @brief
   *
   * Tomcat Native Version
   *
   * There are several different mechanisms for accessing the version. There
   * is a string form, and a set of numbers; in addition, there are constants
   * which can be compiled into your application, and you can query the library
   * being used for its actual version.
   *
   * Note that it is possible for an application to detect that it has been
   * compiled against a different version of APU by use of the compile-time
   * constants and the use of the run-time query function.
   *
   * TCN version numbering follows the guidelines specified in:
   *
   *     http://apr.apache.org/versioning.html
   */
  
  /* The numeric compile-time version constants. These constants are the
   * authoritative version numbers for TCN.
   */
  
  /** major version
   * Major API changes that could cause compatibility problems for older
   * programs such as structure size changes.  No binary compatibility is
   * possible across a change in the major version.
   */
  #define TCN_MAJOR_VERSION       1
  
  /**
   * Minor API changes that do not cause binary compatibility problems.
   * Should be reset to 0 when upgrading TCN_MAJOR_VERSION
   */
  #define TCN_MINOR_VERSION       1
  
  /** patch level */
  #define TCN_PATCH_VERSION       0
  
  /**
   *  This symbol is defined for internal, "development" copies of TCN. This
   *  symbol will be #undef'd for releases.
   */
  #define TCN_IS_DEV_VERSION
  
  
  /** The formatted string of APU's version */
  #define TCN_VERSION_STRING \
       APR_STRINGIFY(TCN_MAJOR_VERSION) "."\
       APR_STRINGIFY(TCN_MINOR_VERSION) "."\
       APR_STRINGIFY(TCN_PATCH_VERSION)\
       TCN_IS_DEV_STRING
  
  /** Internal: string form of the "is dev" flag */
  #ifdef TCN_IS_DEV_VERSION
  #define TCN_IS_DEV_STRING "-dev"
  #else
  #define TCN_IS_DEV_STRING ""
  #endif
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* TCN_VERSION_H */
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org