📄 pi3servletutils.cpp
字号:
* Method: getHttpDate
* Signature: (Ljava/lang/String;)J
*/
JNIEXPORT jlong JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_getHttpDate__Ljava_lang_String_2
(JNIEnv *env, jobject sutils, jstring date) {
jboolean isCopy;
const char *szDate = env->GetStringUTFChars(date, &isCopy);
struct tm pT;
if (HTTPUtil_readTime( szDate, &pT ) == PIAPI_COMPLETED) {
return mktime(&pT);
};
return -1;
};
/*
* Class: org_pi3_servlet_util_Pi3ServletUtils
* Method: getResponseVariable
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_getResponseVariable
(JNIEnv *env, jobject sutils, jstring name) {
jclass cls = env->GetObjectClass(sutils);
jmethodID getServletHandler;
getServletHandler = env->GetMethodID( cls, "getServletHandler", "()I");
// Errorhandling!
if (!getServletHandler) { return env->NewStringUTF(""); };
env->ExceptionClear();
int SHandler = env->CallIntMethod(sutils, getServletHandler);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return env->NewStringUTF("");
};
jmethodID getPiHttp;
getPiHttp = env->GetMethodID( cls, "getPiHttp", "()I");
// Errorhandling!
if (!getPiHttp) { return env->NewStringUTF(""); };
env->ExceptionClear();
int PiHttp = env->CallIntMethod(sutils, getPiHttp);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return env->NewStringUTF("");
};
jboolean isCopy;
const char *pName = env->GetStringUTFChars(name, &isCopy);
Servlet *sh = (Servlet *)SHandler;
const char *pValue = sh->GetResponseVariable((PIHTTP *)PiHttp, (char *)pName);
env->ReleaseStringUTFChars(name, pName);
return pValue ? env->NewStringUTF( pValue ) : NULL;
};
/*
* Class: org_pi3_servlet_util_Pi3ServletUtils
* Method: getRequestVariable
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_getRequestVariable
(JNIEnv *env, jobject sutils, jstring name) {
jclass cls = env->GetObjectClass(sutils);
jmethodID getServletHandler;
getServletHandler = env->GetMethodID( cls, "getServletHandler", "()I");
// Errorhandling!
if (!getServletHandler) { return env->NewStringUTF(""); };
env->ExceptionClear();
int SHandler = env->CallIntMethod(sutils, getServletHandler);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return env->NewStringUTF("");
};
jmethodID getPiHttp;
getPiHttp = env->GetMethodID( cls, "getPiHttp", "()I");
// Errorhandling!
if (!getPiHttp) { return env->NewStringUTF(""); };
env->ExceptionClear();
int PiHttp = env->CallIntMethod(sutils, getPiHttp);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return env->NewStringUTF("");
};
jboolean isCopy;
const char *pName = env->GetStringUTFChars(name, &isCopy);
Servlet *sh = (Servlet *)SHandler;
const char *pValue = sh->GetRequestVariable((PIHTTP *)PiHttp, (char *)pName);
env->ReleaseStringUTFChars(name, pName);
return pValue ? env->NewStringUTF( pValue ) : NULL;
};
/*
* Class: org_pi3_servlet_util_Pi3ServletUtils
* Method: getRequestVariables
* Signature: (Ljava/util/Hashtable;)V
*/
JNIEXPORT void JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_getRequestVariables
(JNIEnv *env, jobject sutils, jobject hreq) {
jclass cls = env->GetObjectClass(sutils);
jmethodID getPiHttp;
getPiHttp = env->GetMethodID( cls, "getPiHttp", "()I");
// Errorhandling!
if (!getPiHttp) { return; };
env->ExceptionClear();
int PiHttp = env->CallIntMethod(sutils, getPiHttp);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return;
};
cls = env->GetObjectClass(hreq);
jmethodID putMID;
putMID = env->GetMethodID( cls, "put",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
// Errorhandling!
if (!putMID) { return; };
env->ExceptionClear();
/* ---
iterate through the request DB
--- */
PIHTTP *pPIHTTP = (PIHTTP *)PiHttp;
const char *pKey;
const char *pValue;
PIDBIterator *pIter = PIDB_getIterator( pPIHTTP->pRequestDB,
PIDBTYPE_RFC822, 0, 0 );
if ( pIter ) {
for( ; PIDBIterator_atValidElement( pIter ); PIDBIterator_next( pIter ) ) {
pValue = (const char *)PIDBIterator_current( pIter, &pKey );
env->CallObjectMethod(hreq, putMID, env->NewStringUTF( pKey ),
env->NewStringUTF( pValue ));
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
PIDBIterator_delete( pIter );
return;
};
};
PIDBIterator_delete( pIter );
};
};
/*
* Class: org_pi3_servlet_util_Pi3ServletUtils
* Method: sendError
* Signature: (I)V
*/
JNIEXPORT jint JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_sendError
(JNIEnv *env, jobject sutils, jint sc) {
jclass cls = env->GetObjectClass(sutils);
jmethodID getPiHttp;
getPiHttp = env->GetMethodID( cls, "getPiHttp", "()I");
// Errorhandling!
if (!getPiHttp) { return PIAPI_ERROR; };
env->ExceptionClear();
int PiHttp = env->CallIntMethod(sutils, getPiHttp);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return PIAPI_ERROR;
};
PIHTTP *pPIHTTP = (PIHTTP *)PiHttp;
char *szBuf;
PIIOBuffer_getOutputBuffer( pPIHTTP->pBuffer, &szBuf );
PIIOBuffer_advanceBufferPointer( pPIHTTP->pBuffer, 0);
// returns INT_REDIRECT
return HTTPUtil_doHTTPError(pPIHTTP, sc);
};
/*
* Class: org_pi3_servlet_util_Pi3ServletUtils
* Method: setResponseVariable
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT void JNICALL Java_org_pi3_servlet_util_Pi3ServletUtils_setResponseVariable
(JNIEnv *env, jobject sutils, jstring name, jstring value) {
jclass cls = env->GetObjectClass(sutils);
jmethodID getPiHttp;
getPiHttp = env->GetMethodID( cls, "getPiHttp", "()I");
// Errorhandling!
if (!getPiHttp) { return; };
env->ExceptionClear();
int PiHttp = env->CallIntMethod(sutils, getPiHttp);
if ( env->ExceptionOccurred() )
{
env->ExceptionDescribe();
env->ExceptionClear();
// Errorhandling!
return;
};
jboolean isCopy;
const char *pName = env->GetStringUTFChars(name, &isCopy);
const char *pValue = env->GetStringUTFChars(value, &isCopy);
PIHTTP *pPIHTTP = (PIHTTP *)PiHttp;
PIDB_replace( pPIHTTP->pResponseDB, PIDBTYPE_RFC822, pName, (void *)pValue, 0 );
env->ReleaseStringUTFChars(name, pName);
env->ReleaseStringUTFChars(value, pValue);
};
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_VERSION_1_2; };
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) {};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -