javacommons/gcfprotocols/secureconnection/src/secureconnectionjni.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/gcfprotocols/secureconnection/src/secureconnectionjni.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+ *
+*/
+
+
+#include "stdlib.h"
+#include "nativesecureconnection.h"
+#include "com_nokia_mj_impl_ssl_SecureConnectionImpl.h"
+
+using namespace java;
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1createNativePeer
+(JNIEnv* aJni, jobject /*peer*/, jstring aName, jint aMode, jstring aHost, jint aPort)
+{
+    const char* host = aJni->GetStringUTFChars(aHost, 0);
+    const char* name = aJni->GetStringUTFChars(aName, 0);
+
+    NativeSecureConnection* secSockConn = new NativeSecureConnection(name, aMode, host, aPort);
+
+    aJni->ReleaseStringUTFChars(aHost, host);
+    aJni->ReleaseStringUTFChars(aName, name);
+    return reinterpret_cast<jint>(secSockConn);
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1doHandshake
+(JNIEnv *aJni, jobject /*peer*/, jint aNativePeerHandle, jint aSocket, jint aType, jint aApn, jintArray  aReturnValue)
+{
+    int err1 = 0;
+    int err2  = 0 ;
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+    int ret = secSockConn->doHandshake(aSocket,aType, aApn, &err1,&err2);
+    LOG1(ESOCKET, EInfo,"SecureConnectionJNI-dohandshake err= %d",err1);
+    LOG1(ESOCKET, EInfo,"SecureConnectionJNI-validate err= %d",err2);
+    //int *temp = &err;
+    aJni->SetIntArrayRegion(aReturnValue,0,1,&err1);
+    aJni->SetIntArrayRegion(aReturnValue,1,1,&err2);
+    return ret;
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getport
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+
+    // getPort method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection class
+    return secSockConn->getPort();
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getLocalPort
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+
+    // getLocalPort method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection class
+    return secSockConn->getLocalPort();
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getSocketOption
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle, int aOption)
+{
+
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+
+    // getSocketOption method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection
+    return secSockConn->getSocketOption(aOption);
+}
+
+JNIEXPORT int JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1setSocketOption
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle, jint aOption, jint aValue)
+{
+
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+
+    // setSocketOption method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection
+    return secSockConn->setSocketOption(aOption, aValue);
+
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getLocalAddress
+(JNIEnv *aJni, jobject /*peer*/, jint aNativePeerHandle, jobjectArray address)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+    char * addr = new char[256];
+
+    // getLocalAddress method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection
+    jint retValue = secSockConn->getLocalAddress(addr);
+    jstring jnistring = aJni->NewStringUTF(addr);
+    aJni->SetObjectArrayElement(address,0,jnistring);
+    aJni->DeleteLocalRef(jnistring);
+    delete[] addr;
+    return retValue;
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getAddress
+(JNIEnv *aJni, jobject /*peer*/, jint aNativePeerHandle, jobjectArray address)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+    char * addr = new char[256];
+
+    // getAddress method of NativeSocketConnection is called
+    // As NativeSecureConnection class derives socket behaviour from NativeSocketConnection
+    jint retValue = secSockConn->getAddress(addr);
+    jstring jnistring = aJni->NewStringUTF(addr);
+    aJni->SetObjectArrayElement(address,0,jnistring);
+    aJni->DeleteLocalRef(jnistring);
+    delete[] addr;
+    return retValue;
+
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1close
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+    return secSockConn->secureSocketClose();
+}
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1getSecurityInfo
+(JNIEnv* aJni,jobject /*peer*/, jint aNativePeerHandle, jobjectArray aStringResultArray)
+{
+    NativeSecureConnection* secSockConn = reinterpret_cast<NativeSecureConnection*>(aNativePeerHandle);
+    ILOG(ESOCKET, "++SecureConnectionJNI ");
+    char **result = secSockConn->getSecurityInfo();
+    jstring jniString;
+
+    for (int i=0; i<9; i++)
+    {
+        ILOG1(ESOCKET, "SecureConnectionJNI result[i]= %s",result[i]);
+        jniString = aJni->NewStringUTF(result[i]);
+        aJni->SetObjectArrayElement(aStringResultArray, i, jniString);
+
+    }
+    aJni->DeleteLocalRef(jniString);
+    return 1;
+}
+
+JNIEXPORT void JNICALL
+Java_com_nokia_mj_impl_ssl_SecureConnectionImpl__1dispose
+(JNIEnv* /*aJni*/, jobject /*peer*/, jint aNativePeerHandle)
+{
+    NativeSocketConnection* nativeConn = reinterpret_cast<NativeSocketConnection*>(aNativePeerHandle);
+    delete nativeConn;
+}