📄 atmi.cpp
字号:
// atmi.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
void jnu_print_bytes(char *p,int len)
{
for(;len>0;--len){
printf("%2X",(unsigned unsigned char)*p);
p++;
}
cout << endl;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpbegin
(JNIEnv *env, jclass caller, jint j_timeout, jint j_flags)
{
return tpbegin(j_timeout,j_flags);
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpcancel
(JNIEnv *env, jclass caller, jint j_cd)
{
return tpcancel(j_cd);
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tptypes
(JNIEnv *env, jclass caller, jobject j_buf, jobject j_ret_type, jobject j_ret_subtype)
{
//long tptypes(char *ptr, char *type, char *subtype)
if(j_buf==NULL)
cout << "buffer is NULL" << endl;
cout << "1" << endl;
JNIByteBuffer send(env,j_buf);
cout << "2" << endl;
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
cout << "3" << endl;
cout << "tptypes" << endl;
if(!p_snd)
cout << "p_snd error" << endl;
jnu_print_bytes((char *)p_snd,4);
char p_type[32];
char p_subtype[32];
jint result;
memset(p_type,0,32);
memset(p_subtype,0,32);
cout << "4" << endl;
result=tptypes((char *)p_snd,&p_type[0],&p_subtype[0]);
cout << "type=" << (char *)p_type << endl;
cout << "subtype=" << (char *)p_subtype << endl;
if(j_ret_type)
{
JNIClassField ret_type(env,j_ret_type);
ret_type.setStringFieldValue("value",(const char *)p_type);
}
if(j_ret_subtype)
{
JNIClassField ret_subtype(env,j_ret_subtype);
ret_subtype.setStringFieldValue("value",(const char *)p_subtype);
}
return result;
};
JNIEXPORT jobject JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tprealloc
(JNIEnv *env, jclass caller, jobject j_buf, jint j_size)
{
JNIByteBuffer buf(env,j_buf);
FBFR32 *p=(FBFR32 *)tprealloc( (char *)buf.getBytes(),j_size);
buf.setBytes( (const jbyte *)p, sizeof(FBFR32));
return (jobject)buf;
};
JNIEXPORT void JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpfree
(JNIEnv *env, jclass caller, jobject j_buf)
{
JNIByteBuffer buf(env,j_buf);
FBFR32 *p=(FBFR32 *)buf.getBytes();
tpfree( (char *)p );
};
JNIEXPORT jobject JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpalloc
(JNIEnv *env, jclass caller , jstring js_type, jstring js_subtype, jint j_size)
{
JNIString s_type(env,js_type);
JNIString s_subtype(env,js_subtype);
FBFR32 *p=(FBFR32 *)tpalloc( (char *)s_type,(char *)s_subtype,j_size);
cout << "tpalloc" << endl;
jnu_print_bytes((char *)p,4);
JNIByteBuffer buf(env,NULL);
buf.setBytes( (const jbyte *)p, sizeof(FBFR32));
return (jobject)buf;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpcall
(JNIEnv *env, jclass caller, jstring svc, jobject idata, jint ilen, jobject odata, jobject olen, jint flags)
{
//int tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)
//服务名
JNIString jnistr (env, svc);
JNIByteBuffer send(env,idata);
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
FBFR32 *p_rcv;
jint result;
jint out_len;
result = tpcall((char *)jnistr,(char *)p_snd,ilen,(char **)&p_rcv,&out_len,flags);
JNIByteBuffer rcv(env,NULL);
rcv.setBytes((const jbyte *)p_rcv,sizeof(FBFR32));
//返回数据缓冲区指针
JNIClassField buf_rcv(env,odata);
buf_rcv.setObjectFieldValue("value",(jobject)rcv,"Ljava/nio/ByteBuffer;");
//返回长度
JNIClassField ret_len(env,olen);
ret_len.setIntFieldValue("value",out_len);
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpadmcall
(JNIEnv *env, jclass caller, jobject j_inbuf, jobject j_outbuf, jint j_flags)
{
//int tpadmcall(FBFR32 *inbuf, FBFR32 **outbuf, long flags)
JNIByteBuffer send(env,j_inbuf);
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
FBFR32 *p_rcv;
jint result;
result = tpadmcall((FBFR32 *)p_snd,(FBFR32 **)&p_rcv,j_flags);
JNIByteBuffer rcv(env,NULL);
rcv.setBytes((const jbyte *)p_rcv,sizeof(FBFR32));
//返回数据缓冲区指针
JNIClassField buf_rcv(env,j_outbuf);
buf_rcv.setObjectFieldValue("value",(jobject)rcv,"Ljava/nio/ByteBuffer;");
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpacall
(JNIEnv *env, jclass caller, jstring j_svc, jobject j_data, jint j_len, jint j_flags)
{
JNIString js_svc (env, j_svc);
JNIByteBuffer send(env,j_data);
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
jint result=tpacall((char *)js_svc,(char *)p_snd,j_len,j_flags);
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpforward
(JNIEnv *env, jclass caller, jstring j_svc, jobject j_data, jint j_len, jint j_flags)
{
JNIString js_svc (env, j_svc);
JNIByteBuffer send(env,j_data);
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
tpforward((char *)js_svc,(char *)p_snd,j_len,j_flags);
return 0;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpconnect
(JNIEnv *env, jclass caller, jstring j_svc, jobject j_data, jint j_len, jint j_flags)
{
JNIString js_svc (env, j_svc);
JNIByteBuffer send(env,j_data);
FBFR32 *p_snd= (FBFR32 *)send.getBytes();
jint result=tpconnect((char *)js_svc,(char *)p_snd,j_len,j_flags);
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpinit
(JNIEnv *env, jclass caller, jobject j_tpinit)
{
int result = -1;
if(j_tpinit==NULL)
result = tpinit( NULL );
else{
char buf[2048];
TPINIT tp;
JNIClassField cls(env,j_tpinit);
cls.copyString2Buffer("cltname",tp.cltname,MAXTIDENT);
cls.copyString2Buffer("usrname",tp.usrname,MAXTIDENT);
cls.copyString2Buffer("passwd",tp.passwd,MAXTIDENT);
cls.copyString2Buffer("grpname",tp.grpname,MAXTIDENT);
tp.flags = cls.getIntFieldValue("flags");
tp.data = (long) &buf;
tp.datalen = cls.copyBytes2Buffer("data",buf,2048);
cls.setStringFieldValue("usrname","hello");
result = tpinit( &tp );
}
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpterm
(JNIEnv *env, jclass caller)
{
return tpterm();
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpabort
(JNIEnv *env, jclass caller, jint j_flags)
{
return tpabort(j_flags);
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tperrno
(JNIEnv *env, jclass caller)
{
return tperrno;
};
JNIEXPORT jstring JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tpstrerror
(JNIEnv *env, jclass caller, jint j_errno)
{
char *p=tpstrerror(j_errno);
string str;
str.assign((const char *)p);
JNIString j_str(env,str);
return (jstring)j_str;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tperrordetail
(JNIEnv *env, jclass caller, jint j_flags)
{
jint result=tperrordetail(j_flags);
return result;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tuxputenv
(JNIEnv *env, jclass caller, jstring j_host_port)
{
JNIString jnistr (env, j_host_port);
return tuxputenv( (char *)jnistr.GetString().c_str() );
};
JNIEXPORT jstring JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tuxgetenv
(JNIEnv *env, jclass caller, jstring j_name)
{
JNIString js_env(env,j_name);
char *p = tuxgetenv((char *)js_env);
string str;
str.assign((const char *)p);
js_env=str;
return (jstring) js_env;
};
JNIEXPORT jint JNICALL Java_com_poson_ibss_tuxedo_TuxedoInterop_tuxreadenv
(JNIEnv *env, jclass caller, jstring j_filename, jstring j_label)
{
JNIString js_filename(env,j_filename);
JNIString js_label(env,j_label);
return tuxreadenv((char *)js_filename,(char *)js_label);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -