Bean工厂申明 factory.h:

#pragma once
#include "stdafx.h"
#include "MT4ManagerAPI.h"/*************************************************
*将GB2312编码的字符串转为UTF-8编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将GB2312转为Unicode编码
*再将Unicode转为UTF-8
*************************************************/
const char* Gb2312ToUtf8(const char* p);/*************************************************
*将UTF-8编码的字符串转为GB2312编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将UTF-8转为Unicode编码
*再将Unicode转为GB2312
*************************************************/
const char* Utf8ToGb2312(const char* p);/*
* 获取品种组
*/
jobject getConSymbolGroup(JNIEnv* env, jclass clazz, ConSymbolGroup tr);
/*
* 获取节日
*/
jobject getConHoliday(JNIEnv* env, jclass clazz, ConHoliday tr);
/*
* Symbol session
*/
jobject getConSession(JNIEnv* env, jclass clazz, ConSession tr);
/*
* 获取symbol sessions
*/
jobject getConSessions(JNIEnv* env, jclass clazz, ConSessions tr);
/*
* 获取品种
*/
jobject getConSymbol(JNIEnv* env, jclass clazz, ConSymbol tr);
/*
* Security group configuration for client group
*/
jobject getConGroupSec(JNIEnv* env, jclass clazz, ConGroupSec tr);
/*
* Special securities configurations for client group
*/
jobject getConGroupMargin(JNIEnv* env, jclass clazz, ConGroupMargin tr);
/** 获取用户组*/
jobject getConGroup(JNIEnv* env, jclass clazz, ConGroup tr);
/** 获取交易记录*/
jobject getTradeRecord(JNIEnv* env, jclass clazz, TradeRecord tr);
/** 获取Manange 安全组*/
jobject getConManagerSec(JNIEnv* env, jclass clazz, ConManagerSec tr);
/** 获取Manange权限*/
jobject getConManager(JNIEnv* env, jclass clazz, ConManager tr);
/** 获取数据源*/
jobject getConFeeder(JNIEnv* env, jclass clazz, ConFeeder tr);
/**
* 资讯配置
*/
jobject getLiveInfoFile(JNIEnv* env, jclass clazz, LiveInfoFile tr);
/**
* 资讯配置
*/
jobject getpConLiveUpdate(JNIEnv* env, jclass clazz, ConLiveUpdate tr);
/**
* 同步配置
*/
jobject getConSync(JNIEnv* env, jclass clazz, ConSync tr);
/**
* 品种信息
*/
jobject getSymbolInfo(JNIEnv* env, jclass clazz, SymbolInfo tr);
/**
* 服务器日记信息
*/
jobject getServerLog(JNIEnv* env, jclass clazz, ServerLog tr);
/**
* 用户记录
*/
jobject getUserRecord(JNIEnv* env, jclass clazz, UserRecord tr);
/*
*获取用户记录
*/
UserRecord* getUserRecordFromObject(JNIEnv* env, jobject userRecord);
/*
*获取用户组操作
*/
GroupCommandInfo* getGroupCommandInfoFromObject(JNIEnv* env, jobject info);
/*
* 在线用户记录
*/
jobject getOnlineRecord(JNIEnv* env, jclass clazz, OnlineRecord tr);
/*
*获取交易命令
*/
TradeTransInfo* getTradeTransInfoFromObject(JNIEnv* env, jobject tradeTransInfo);
/** 获取请求记录*/
jobject getRequestInfo(JNIEnv* env, jclass clazz, RequestInfo tr);
/** 获取请求信息*/
jobject getTradeTransInfo(JNIEnv* env, jclass clazz, TradeTransInfo tr);
/*
*获取保证金等级信息
*/
jobject getMarginLevel(JNIEnv* env, jclass clazz, MarginLevel tr);
/*
* 获取品种组
*/
jobject getConSymbolGroup(JNIEnv* env, jclass clazz, ConSymbolGroup tr);
/*
* 获取报价
*/
jobject getTickInfo(JNIEnv* env, jclass clazz, TickInfo tr);
/*
* 获取图表参数
*/
ChartInfo* getChartInfoFromObject(JNIEnv* env, jobject chartInfo);
/*
* 获取K线
*/
jobject getRateInfo(JNIEnv* env, jclass clazz, long timesign, RateInfo tr);
/*
* 获取品种报价
*/
TickRequest* getTickRequestFromObject(JNIEnv* env, jobject tickRequest);
/*
* 获取报价数据
*/
jobject getTickRecord(JNIEnv* env, jclass clazz, TickRecord tr);

Bean工厂factory.cpp:

#include "factory.h"const char* Gb2312ToUtf8(const char* p) {DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, p, -1, NULL, 0);char* psText;wchar_t* pwText = (wchar_t*)malloc(dwNum * sizeof(wchar_t));if (NULL == pwText) {return NULL;}dwNum = MultiByteToWideChar(CP_ACP, 0, p, -1, pwText, dwNum);dwNum = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, NULL, 0, NULL, NULL);psText = (char*)malloc(dwNum * sizeof(char));dwNum = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, psText, dwNum, NULL, NULL);free(pwText);return psText;
}const char* Utf8ToGb2312(const char* p) {DWORD dwNum = MultiByteToWideChar(CP_UTF8, 0, p, -1, NULL, 0);char* psText;wchar_t* pwText = (wchar_t*)malloc(dwNum * sizeof(wchar_t));if (NULL == pwText) {return NULL;}dwNum = MultiByteToWideChar(CP_UTF8, 0, p, -1, pwText, dwNum);dwNum = WideCharToMultiByte(CP_ACP, 0, pwText, -1, NULL, 0, NULL, NULL);psText = (char*)malloc(dwNum * sizeof(char));dwNum = WideCharToMultiByte(CP_ACP, 0, pwText, -1, psText, dwNum, NULL, NULL);free(pwText);return psText;
}/** use javap -s class to find method signature*/
static jmethodID getMethod(JNIEnv* env, jclass clazz, const char* methodName, const char* sig) {jmethodID method = env->GetMethodID(clazz, methodName, sig);return method;
}
/*
* 获取品种组
*/
jobject getConSymbolGroup(JNIEnv* env, jclass clazz, ConSymbolGroup tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setName", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.name));}method = getMethod(env, clazz, "setDescription", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.description));}return record;
}/*
* 获取节日
*/
jobject getConHoliday(JNIEnv* env, jclass clazz, ConHoliday tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setYear", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.year);}method = getMethod(env, clazz, "setMonth", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.month);}method = getMethod(env, clazz, "setDay", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.day);}method = getMethod(env, clazz, "setFrom", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.from);}method = getMethod(env, clazz, "setTo", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.to);}method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setDescription", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.description));}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(13);env->SetIntArrayRegion(reserveds, 0, 13, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}/*
* Symbol session
*/
jobject getConSession(JNIEnv* env, jclass clazz, ConSession tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setOpen_hour", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open_hour);}method = getMethod(env, clazz, "setOpen_min", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open_min);}method = getMethod(env, clazz, "setClose_hour", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_hour);}method = getMethod(env, clazz, "setClose_min", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_min);}method = getMethod(env, clazz, "setOpen", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open);}method = getMethod(env, clazz, "setClose", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close);}/*method = getMethod(env, clazz, "setAlign", "([S)V");if (NULL != method) {jshortArray reserveds = env->NewShortArray(7);env->SetShortArrayRegion(reserveds, 0, 7, reinterpret_cast<jshort*>(tr.align));env->CallVoidMethod(record, method, reserveds);}*/return record;
}/*
* 获取symbol sessions
*/
jobject getConSessions(JNIEnv* env, jclass clazz, ConSessions tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setQuote", "([Lcom/metoo/mt4/bean/symbol/ConSession;)V");if (NULL != method) {ConSession* pquote = tr.quote;if (NULL != pquote) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/symbol/ConSession");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/symbol/ConSession] error");}else {int size = 3;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConSession _tr = pquote[i];jobject _record = getConSession(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setTrade", "([Lcom/metoo/mt4/bean/symbol/ConSession;)V");if (NULL != method) {ConSession* ptrade = tr.trade;if (NULL != ptrade) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/symbol/ConSession");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/symbol/ConSession] error");}else {int size = 3;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConSession _tr = ptrade[i];jobject _record = getConSession(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setQuote_overnight", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.quote_overnight);}method = getMethod(env, clazz, "setTrade_overnight", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.trade_overnight);}/*method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(2);env->SetIntArrayRegion(reserveds, 0, 2, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}*/return record;
}/*
* 获取品种对
*/
jobject getConSymbol(JNIEnv* env, jclass clazz, ConSymbol tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setDescription", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.description));}method = getMethod(env, clazz, "setSource", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.source));}method = getMethod(env, clazz, "setCurrency", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.currency));}method = getMethod(env, clazz, "setType", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.type);}method = getMethod(env, clazz, "setDigits", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.digits);}method = getMethod(env, clazz, "setTrade", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.trade);}method = getMethod(env, clazz, "setBackground_color", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.background_color);}method = getMethod(env, clazz, "setCount", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.count);}method = getMethod(env, clazz, "setCount_original", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.count_original);}/*method = getMethod(env, clazz, "setExternal_unused", "([I)V");if (NULL != method) {jintArray external_unuseds = env->NewIntArray(7);env->SetIntArrayRegion(external_unuseds, 0, 7, reinterpret_cast<jint*>(tr.external_unused));env->CallVoidMethod(record, method, external_unuseds);}*/method = getMethod(env, clazz, "setRealtime", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.realtime);}method = getMethod(env, clazz, "setStarting", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.starting);}method = getMethod(env, clazz, "setExpiration", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.expiration);}method = getMethod(env, clazz, "setSessions", "([Lcom/metoo/mt4/bean/symbol/ConSessions;)V");if (NULL != method) {ConSessions* psessions = tr.sessions;if (NULL != psessions) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/symbol/ConSessions");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/symbol/ConSessions] error");}else {int size = 7;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConSessions _tr = psessions[i];jobject _record = getConSessions(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setProfit_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.profit_mode);}method = getMethod(env, clazz, "setProfit_reserved", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.profit_reserved);}method = getMethod(env, clazz, "setFilter", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.filter);}method = getMethod(env, clazz, "setFilter_counter", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.filter_counter);}method = getMethod(env, clazz, "setFilter_limit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.filter_limit);}method = getMethod(env, clazz, "setFilter_smoothing", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.filter_smoothing);}method = getMethod(env, clazz, "setFilter_reserved", "(F)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.filter_reserved);}method = getMethod(env, clazz, "setLogging", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.logging);}method = getMethod(env, clazz, "setSpread", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.spread);}method = getMethod(env, clazz, "setSpread_balance", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.spread_balance);}method = getMethod(env, clazz, "setExemode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.exemode);}method = getMethod(env, clazz, "setSwap_enable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_enable);}method = getMethod(env, clazz, "setSwap_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_type);}method = getMethod(env, clazz, "setSwap_long", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_long);}method = getMethod(env, clazz, "setSwap_short", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_short);}method = getMethod(env, clazz, "setSwap_rollover3days", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_rollover3days);}method = getMethod(env, clazz, "setContract_size", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.contract_size);}method = getMethod(env, clazz, "setTick_value", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.tick_value);}method = getMethod(env, clazz, "setTick_size", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.tick_size);}method = getMethod(env, clazz, "setStops_level", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.stops_level);}method = getMethod(env, clazz, "setGtc_pendings", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gtc_pendings);}method = getMethod(env, clazz, "setMargin_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_mode);}method = getMethod(env, clazz, "setMargin_initial", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_initial);}method = getMethod(env, clazz, "setMargin_maintenance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_maintenance);}method = getMethod(env, clazz, "setMargin_hedged", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_hedged);}method = getMethod(env, clazz, "setMargin_divider", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_divider);}method = getMethod(env, clazz, "setPoint", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.point);}method = getMethod(env, clazz, "setMultiply", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.multiply);}method = getMethod(env, clazz, "setBid_tickvalue", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.bid_tickvalue);}method = getMethod(env, clazz, "setAsk_tickvalue", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ask_tickvalue);}method = getMethod(env, clazz, "setLong_only", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.long_only);}method = getMethod(env, clazz, "setInstant_max_volume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.instant_max_volume);}method = getMethod(env, clazz, "setMargin_currency", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.margin_currency));}method = getMethod(env, clazz, "setFreeze_level", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.freeze_level);}method = getMethod(env, clazz, "setMargin_hedged_strong", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_hedged_strong);}method = getMethod(env, clazz, "setValue_date", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.value_date);}method = getMethod(env, clazz, "setQuotes_delay", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.quotes_delay);}method = getMethod(env, clazz, "setSwap_openprice", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_openprice);}method = getMethod(env, clazz, "setSwap_variation_margin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_variation_margin);}/*method = getMethod(env, clazz, "setUnused", "([I)V");if (NULL != method) {jintArray unuseds = env->NewIntArray(21);env->SetIntArrayRegion(unuseds, 0, 21, reinterpret_cast<jint*>(tr.unused));env->CallVoidMethod(record, method, unuseds);}*/return record;
}/*
* Security group configuration for client group
*/
jobject getConGroupSec(JNIEnv* env, jclass clazz, ConGroupSec tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setShow", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.show);}method = getMethod(env, clazz, "setTrade", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.trade);}method = getMethod(env, clazz, "setExecution", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.execution);}method = getMethod(env, clazz, "setComm_base", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_base);}method = getMethod(env, clazz, "setComm_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_type);}method = getMethod(env, clazz, "setComm_lots", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_lots);}method = getMethod(env, clazz, "setComm_agent", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_agent);}method = getMethod(env, clazz, "setComm_agent_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_agent_type);}method = getMethod(env, clazz, "setSpread_diff", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.spread_diff);}method = getMethod(env, clazz, "setLot_min", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.lot_min);}method = getMethod(env, clazz, "setLot_max", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.lot_max);}method = getMethod(env, clazz, "setLot_step", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.lot_step);}method = getMethod(env, clazz, "setIe_deviation", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ie_deviation);}method = getMethod(env, clazz, "setConfirmation", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.confirmation);}method = getMethod(env, clazz, "setTrade_rights", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.trade_rights);}method = getMethod(env, clazz, "setIe_quick_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ie_quick_mode);}method = getMethod(env, clazz, "setAutocloseout_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.autocloseout_mode);}method = getMethod(env, clazz, "setComm_tax", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_tax);}method = getMethod(env, clazz, "setComm_agent_lots", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_agent_lots);}method = getMethod(env, clazz, "setFreemargin_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.freemargin_mode);}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(3);env->SetIntArrayRegion(reserveds, 0, 3, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}/*
* Special securities configurations for client group
*/
jobject getConGroupMargin(JNIEnv* env, jclass clazz, ConGroupMargin tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setSwap_long", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_long);}method = getMethod(env, clazz, "setSwap_short", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.swap_short);}method = getMethod(env, clazz, "setMargin_divider", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_divider);}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(7);env->SetIntArrayRegion(reserveds, 0, 7, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}/** 获取用户组*/
jobject getConGroup(JNIEnv* env, jclass clazz, ConGroup tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setGroup", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.group)));}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setTimeout", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timeout);}method = getMethod(env, clazz, "setOtp_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.otp_mode);}method = getMethod(env, clazz, "setCompany", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.company)));}method = getMethod(env, clazz, "setSignature", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.signature));}method = getMethod(env, clazz, "setSupport_page", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.support_page));}method = getMethod(env, clazz, "setSmtp_server", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.smtp_server));}method = getMethod(env, clazz, "setSmtp_login", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.smtp_login));}method = getMethod(env, clazz, "setSmtp_password", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.smtp_password));}method = getMethod(env, clazz, "setSupport_email", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.support_email));}method = getMethod(env, clazz, "setTemplates", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.templates));}method = getMethod(env, clazz, "setCopies", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.copies);}method = getMethod(env, clazz, "setReports", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.reports);}method = getMethod(env, clazz, "setDefault_leverage", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.default_leverage);}method = getMethod(env, clazz, "setDefault_deposit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.default_deposit);}method = getMethod(env, clazz, "setMaxsecurities", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.maxsecurities);}method = getMethod(env, clazz, "setSecgroups", "([Lcom/metoo/mt4/bean/group/ConGroupSec;)V");if (NULL != method) {ConGroupSec* secgroups = tr.secgroups;if (NULL != secgroups) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/group/ConGroupSec");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/group/ConGroupSec] error");}else {int size = 32;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConGroupSec _tr = secgroups[i];jobject _record = getConGroupSec(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setSecmargins", "([Lcom/metoo/mt4/bean/group/ConGroupMargin;)V");if (NULL != method) {ConGroupMargin* secmargins = tr.secmargins;if (NULL != secmargins) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/group/ConGroupMargin");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/group/ConGroupMargin] error");}else {int size = 128;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConGroupMargin _tr = secmargins[i];jobject _record = getConGroupMargin(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setSecmargins_total", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.secmargins_total);}method = getMethod(env, clazz, "setCurrency", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.currency));}method = getMethod(env, clazz, "setCredit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.credit);}method = getMethod(env, clazz, "setMargin_call", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_call);}method = getMethod(env, clazz, "setMargin_mode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_mode);}method = getMethod(env, clazz, "setMargin_stopout", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_stopout);}method = getMethod(env, clazz, "setInterestrate", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.interestrate);}method = getMethod(env, clazz, "setUse_swap", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.use_swap);}method = getMethod(env, clazz, "setNews", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.news);}method = getMethod(env, clazz, "setRights", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.rights);}method = getMethod(env, clazz, "setCheck_ie_prices", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.check_ie_prices);}method = getMethod(env, clazz, "setMaxpositions", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.maxpositions);}method = getMethod(env, clazz, "setClose_reopen", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_reopen);}method = getMethod(env, clazz, "setHedge_prohibited", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.hedge_prohibited);}method = getMethod(env, clazz, "setClose_fifo", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_fifo);}method = getMethod(env, clazz, "setHedge_largeleg", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.hedge_largeleg);}method = getMethod(env, clazz, "setUnused_rights", "([I)V");if (NULL != method) {jintArray unused_rights = env->NewIntArray(2);env->SetIntArrayRegion(unused_rights, 0, 2, reinterpret_cast<jint*>(tr.unused_rights));env->CallVoidMethod(record, method, unused_rights);}method = getMethod(env, clazz, "setSecurities_hash", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.securities_hash));}method = getMethod(env, clazz, "setMargin_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_type);}method = getMethod(env, clazz, "setArchive_period", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.archive_period);}method = getMethod(env, clazz, "setArchive_max_balance", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.archive_max_balance);}method = getMethod(env, clazz, "setStopout_skip_hedged", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.stopout_skip_hedged);}method = getMethod(env, clazz, "setArchive_pending_period", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.archive_pending_period);}method = getMethod(env, clazz, "setNews_languages", "([I)V");if (NULL != method) {jintArray news_languages = env->NewIntArray(8);env->SetIntArrayRegion(news_languages, 0, 8, reinterpret_cast<jint*>(tr.news_languages));env->CallVoidMethod(record, method, news_languages);}method = getMethod(env, clazz, "setNews_languages_total", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.news_languages_total);}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(17);env->SetIntArrayRegion(reserveds, 0, 17, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}
/** 获取交易记录*/
jobject getTradeRecord(JNIEnv* env, jclass clazz, TradeRecord tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setOrder", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.order);}method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setDigits", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.digits);}method = getMethod(env, clazz, "setCmd", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.cmd);}method = getMethod(env, clazz, "setVolume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.volume);}method = getMethod(env, clazz, "setOpenTime", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open_time);}method = getMethod(env, clazz, "setState", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.state);}method = getMethod(env, clazz, "setOpenPrice", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open_price);}method = getMethod(env, clazz, "setSl", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.sl);}method = getMethod(env, clazz, "setTp", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.tp);}method = getMethod(env, clazz, "setCloseTime", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_time);}method = getMethod(env, clazz, "setGwVolume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_volume);}method = getMethod(env, clazz, "setExpiration", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.expiration);}method = getMethod(env, clazz, "setReason", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, (jint)tr.reason);}method = getMethod(env, clazz, "setConvReserv", "(Ljava/lang/String;)V");if (NULL != method) {if (NULL != tr.conv_reserv) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.conv_reserv));}}/*if (NULL != tr.conv_rates) {method = getMethod(env, clazz, "setConvRates", "([D)V");if (NULL != method) {jdoubleArray conv_rates = env->NewDoubleArray(2);env->SetDoubleArrayRegion(conv_rates, 0, 2, tr.conv_rates);env->CallVoidMethod(record, method, conv_rates);}}*/method = getMethod(env, clazz, "setCommission", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.commission);}method = getMethod(env, clazz, "setCommissionAgent", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.commission_agent);}method = getMethod(env, clazz, "setStorage", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.storage);}method = getMethod(env, clazz, "setClosePrice", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close_price);}method = getMethod(env, clazz, "setProfit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.profit);}method = getMethod(env, clazz, "setTaxes", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.taxes);}method = getMethod(env, clazz, "setMagic", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.magic);}method = getMethod(env, clazz, "setComment", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.comment));}method = getMethod(env, clazz, "setGwOrder", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_order);}method = getMethod(env, clazz, "setActivation", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.activation);}method = getMethod(env, clazz, "setGwOpenPrice", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_open_price);}method = getMethod(env, clazz, "setGwClosePrice", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_close_price);}method = getMethod(env, clazz, "setMarginRate", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_rate);}method = getMethod(env, clazz, "setTimestamp", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timestamp);}//method = getMethod(env, clazz, "setApiData", "([I)V");//if (NULL != method) {//  //int size = sizeof(tr.api_data);//    jintArray api_datas = env->NewIntArray(4);//    env->SetIntArrayRegion(api_datas, 0, 4, reinterpret_cast<jint*>(tr.api_data));//   env->CallVoidMethod(record, method, api_datas);//}return record;
}/** 获取Manange 安全组*/
jobject getConManagerSec(JNIEnv* env, jclass clazz, ConManagerSec tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setInternal", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.internal);}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setMinimum_lots", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.minimum_lots);}method = getMethod(env, clazz, "setMaximum_lots", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.maximum_lots);}/*method = getMethod(env, clazz, "setUnused", "([I)V");if (NULL != method) {jintArray unuseds = env->NewIntArray(16);env->SetIntArrayRegion(unuseds, 0, 16, reinterpret_cast<jint*>(tr.unused));env->CallVoidMethod(record, method, unuseds);}*/return record;
}/** 获取Manange权限*/
jobject getConManager(JNIEnv* env, jclass clazz, ConManager tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setManager", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.manager);}method = getMethod(env, clazz, "setMoney", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.money);}method = getMethod(env, clazz, "setOnline", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.online);}method = getMethod(env, clazz, "setRiskman", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.riskman);}method = getMethod(env, clazz, "setBroker", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.broker);}method = getMethod(env, clazz, "setAdmin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.admin);}method = getMethod(env, clazz, "setLogs", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.logs);}method = getMethod(env, clazz, "setReports", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.reports);}method = getMethod(env, clazz, "setTrades", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.trades);}method = getMethod(env, clazz, "setMarket_watch", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.market_watch);}method = getMethod(env, clazz, "setEmail", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.email);}method = getMethod(env, clazz, "setUser_details", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.user_details);}method = getMethod(env, clazz, "setSee_trades", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.see_trades);}method = getMethod(env, clazz, "setNews", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.news);}method = getMethod(env, clazz, "setPlugins", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.plugins);}method = getMethod(env, clazz, "setServer_reports", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.server_reports);}method = getMethod(env, clazz, "setTechsupport", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.techsupport);}method = getMethod(env, clazz, "setMarket", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.market);}method = getMethod(env, clazz, "setNotifications", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.notifications);}/*method = getMethod(env, clazz, "setUnused", "([I)V");if (NULL != method) {int size = 9;jintArray unuseds = env->NewIntArray(size);env->SetIntArrayRegion(unuseds, 0, size, reinterpret_cast<jint*>(tr.unused));env->CallVoidMethod(record, method, unuseds);}*/method = getMethod(env, clazz, "setIpfilter", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ipfilter);}method = getMethod(env, clazz, "setIp_from", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ip_from);}method = getMethod(env, clazz, "setIp_to", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ip_to);}method = getMethod(env, clazz, "setMailbox", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.mailbox));}method = getMethod(env, clazz, "setGroups", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.groups));}method = getMethod(env, clazz, "setSecgroups", "([Lcom/metoo/mt4/bean/manager/ConManagerSec;)V");if (NULL != method) {ConManagerSec* psecgroups = tr.secgroups;if (NULL != psecgroups) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/manager/ConManagerSec");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/manager/ConManagerSec] error");}else {int size = 32;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {ConManagerSec _tr = psecgroups[i];jobject _record = getConManagerSec(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setExp_time", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.exp_time);}method = getMethod(env, clazz, "setName", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.name));}method = getMethod(env, clazz, "setInfo_depth", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.info_depth);}/*method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(22);env->SetIntArrayRegion(reserveds, 0, 22, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}*/return record;
}/** 获取数据源*/
jobject getConFeeder(JNIEnv* env, jclass clazz, ConFeeder tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setName", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.name));}method = getMethod(env, clazz, "setFile", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.file));}method = getMethod(env, clazz, "setServer", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.server));}method = getMethod(env, clazz, "setLogin", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.login));}method = getMethod(env, clazz, "setPass", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.pass));}method = getMethod(env, clazz, "setKeywords", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.keywords));}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setMode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.mode);}method = getMethod(env, clazz, "setTimeout", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timeout);}method = getMethod(env, clazz, "setTimeout_reconnect", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timeout_reconnect);}method = getMethod(env, clazz, "setTimeout_sleep", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timeout_sleep);}method = getMethod(env, clazz, "setAttemps_sleep", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.attemps_sleep);}method = getMethod(env, clazz, "setNews_langid", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.news_langid);}method = getMethod(env, clazz, "setUnused", "([I)V");if (NULL != method) {jintArray unuseds = env->NewIntArray(33);env->SetIntArrayRegion(unuseds, 0, 33, reinterpret_cast<jint*>(tr.unused));env->CallVoidMethod(record, method, unuseds);}return record;
}/**
* 资讯配置
*/
jobject getLiveInfoFile(JNIEnv* env, jclass clazz, LiveInfoFile tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setFile", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.file));}method = getMethod(env, clazz, "setSize", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.size);}method = getMethod(env, clazz, "setHash", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.hash));}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(10);env->SetIntArrayRegion(reserveds, 0, 10, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}
/**
* 资讯配置
*/
jobject getpConLiveUpdate(JNIEnv* env, jclass clazz, ConLiveUpdate tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setCompany", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.company));}method = getMethod(env, clazz, "setPath", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.path));}method = getMethod(env, clazz, "setVersion", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.version);}method = getMethod(env, clazz, "setBuild", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.build);}method = getMethod(env, clazz, "setMaxconnect", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.maxconnect);}method = getMethod(env, clazz, "setConnections", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.connections);}method = getMethod(env, clazz, "setType", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.type);}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setTotalfiles", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.totalfiles);}method = getMethod(env, clazz, "setFiles", "([Lcom/metoo/mt4/bean/configuration/LiveInfoFile;)V");if (NULL != method) {LiveInfoFile* pfiles = tr.files;if (NULL != pfiles) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/configuration/LiveInfoFile");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/configuration/LiveInfoFile] error");}else {int size = 128;jobjectArray _arr = env->NewObjectArray(size, _clazz, NULL);for (int i = 0; i < size; i++) {LiveInfoFile _tr = pfiles[i];jobject _record = getLiveInfoFile(env, _clazz, _tr);env->SetObjectArrayElement(_arr, i, _record);}env->CallVoidMethod(record, method, _arr);}}}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(16);env->SetIntArrayRegion(reserveds, 0, 16, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}/**
* 同步配置
*/
jobject getConSync(JNIEnv* env, jclass clazz, ConSync tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setServer", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.server));}method = getMethod(env, clazz, "setUnusedport", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.unusedport);}method = getMethod(env, clazz, "setLogin", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.login));}method = getMethod(env, clazz, "setPassword", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.password));}method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setMode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.mode);}method = getMethod(env, clazz, "setFrom", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.from);}method = getMethod(env, clazz, "setTo", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.to);}method = getMethod(env, clazz, "setSecurities", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.securities));}method = getMethod(env, clazz, "setReserved", "([I)V");if (NULL != method) {jintArray reserveds = env->NewIntArray(14);env->SetIntArrayRegion(reserveds, 0, 14, reinterpret_cast<jint*>(tr.reserved));env->CallVoidMethod(record, method, reserveds);}return record;
}/**
* 品种信息
*/
jobject getSymbolInfo(JNIEnv* env, jclass clazz, SymbolInfo tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setDigits", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.digits);}method = getMethod(env, clazz, "setCount", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.count);}method = getMethod(env, clazz, "setVisible", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.visible);}method = getMethod(env, clazz, "setType", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.type);}method = getMethod(env, clazz, "setPoint", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.point);}method = getMethod(env, clazz, "setSpread", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.spread);}method = getMethod(env, clazz, "setSpread_balance", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.spread_balance);}method = getMethod(env, clazz, "setDirection", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.direction);}method = getMethod(env, clazz, "setUpdateflag", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.updateflag);}method = getMethod(env, clazz, "setLasttime", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.lasttime);}method = getMethod(env, clazz, "setBid", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.bid);}method = getMethod(env, clazz, "setAsk", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ask);}method = getMethod(env, clazz, "setHigh", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.high);}method = getMethod(env, clazz, "setLow", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.low);}method = getMethod(env, clazz, "setCommission", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.commission);}method = getMethod(env, clazz, "setComm_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.comm_type);}return record;
}/**
* 服务器日记信息
*/
jobject getServerLog(JNIEnv* env, jclass clazz, ServerLog tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setCode", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.code);}method = getMethod(env, clazz, "setTime", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.time));}method = getMethod(env, clazz, "setIp", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.ip));}method = getMethod(env, clazz, "setMessage", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.message));}return record;
}/**
* 用户记录
*/
jobject getUserRecord(JNIEnv* env, jclass clazz, UserRecord tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setGroup", "(Ljava/lang/String;)V");if (NULL != method) {jstring stringData = env->NewStringUTF(tr.group);env->CallVoidMethod(record, method, stringData);}/*非UTF-8导致异常*//*method = getMethod(env, clazz, "setPassword", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.password));}*/method = getMethod(env, clazz, "setEnable", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable);}method = getMethod(env, clazz, "setEnable_change_password", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable_change_password);}method = getMethod(env, clazz, "setEnable_read_only", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable_read_only);}method = getMethod(env, clazz, "setEnable_otp", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.enable_otp);}/*method = getMethod(env, clazz, "setEnable_reserved", "([I)V");if (NULL != method) {jintArray enable_reserveds = env->NewIntArray(2);env->SetIntArrayRegion(enable_reserveds, 0, 2, reinterpret_cast<jint*>(tr.enable_reserved));env->CallVoidMethod(record, method, enable_reserveds);}*//*method = getMethod(env, clazz, "setPassword_investor", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.password_investor));}method = getMethod(env, clazz, "setPassword_phone", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.password_phone));}*/method = getMethod(env, clazz, "setName", "(Ljava/lang/String;)V");if (NULL != method) {jstring stringData = env->NewStringUTF(Gb2312ToUtf8(tr.name));env->CallVoidMethod(record, method, stringData);}method = getMethod(env, clazz, "setCountry", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.country)));}method = getMethod(env, clazz, "setCity", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.city)));}method = getMethod(env, clazz, "setState", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.state)));}method = getMethod(env, clazz, "setZipcode", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.zipcode));}method = getMethod(env, clazz, "setAddress", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.address)));}method = getMethod(env, clazz, "setLead_source", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.lead_source));}method = getMethod(env, clazz, "setPhone", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.phone));}method = getMethod(env, clazz, "setEmail", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.email));}method = getMethod(env, clazz, "setComment", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(Gb2312ToUtf8(tr.comment)));}method = getMethod(env, clazz, "setId", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.id));}method = getMethod(env, clazz, "setStatus", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.status));}method = getMethod(env, clazz, "setRegdate", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.regdate);}method = getMethod(env, clazz, "setLastdate", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.lastdate);}method = getMethod(env, clazz, "setLeverage", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.leverage    );}method = getMethod(env, clazz, "setAgent_account", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.agent_account);}method = getMethod(env, clazz, "setTimestamp", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.timestamp);}method = getMethod(env, clazz, "setLast_ip", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.last_ip);}method = getMethod(env, clazz, "setBalance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.balance);}method = getMethod(env, clazz, "setPrevmonthbalance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.prevmonthbalance);}method = getMethod(env, clazz, "setPrevbalance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.prevbalance);}method = getMethod(env, clazz, "setCredit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.credit);}method = getMethod(env, clazz, "setInterestrate", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.interestrate);}method = getMethod(env, clazz, "setTaxes", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.taxes);}method = getMethod(env, clazz, "setPrevmonthequity", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.prevmonthequity);}method = getMethod(env, clazz, "setPrevequity", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.prevequity);}/*method = getMethod(env, clazz, "setReserved2", "([D)V");if (NULL != method) {jdoubleArray reserved2s = env->NewDoubleArray(2);env->SetDoubleArrayRegion(reserved2s, 0, 2, reinterpret_cast<jdouble*>(tr.reserved2));env->CallVoidMethod(record, method, reserved2s);}*/method = getMethod(env, clazz, "setOtp_secret", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.otp_secret));}method = getMethod(env, clazz, "setSecure_reserved", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.secure_reserved));}method = getMethod(env, clazz, "setSend_reports", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.send_reports);}method = getMethod(env, clazz, "setMqid", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.mqid);}method = getMethod(env, clazz, "setUser_color", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.user_color);}/*method = getMethod(env, clazz, "setUnused", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.unused));}method = getMethod(env, clazz, "setApi_data", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.api_data));}*/return record;
}
/*
*获取用户记录
*/
UserRecord* getUserRecordFromObject(JNIEnv* env, jobject userRecord) {if (NULL == userRecord) {return NULL;}jclass clazz = env->GetObjectClass(userRecord);int size = sizeof(UserRecord);UserRecord* pRecord = (UserRecord*)malloc(size);if (NULL == pRecord) {printf("malloc UserRecord fail");return NULL;}memset(pRecord, 0, size);jfieldID field = env->GetFieldID(clazz, "login", "I");if (NULL != field) {pRecord->login = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "group", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);const char* pCharData = env->GetStringUTFChars(stringData,JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->group[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}field = env->GetFieldID(clazz, "password", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->password[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "enable", "I");if (NULL != field) {pRecord->enable = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "enable_change_password", "I");if (NULL != field) {pRecord->enable_change_password = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "enable_read_only", "I");if (NULL != field) {pRecord->enable_read_only = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "enable_otp", "I");if (NULL != field) {pRecord->enable_otp = env->GetIntField(userRecord, field);}/*field = env->GetFieldID(clazz, "enable_reserved", "[I");if (NULL != field) {jintArray intArrayData = (jintArray)env->GetObjectField(userRecord, field);if (NULL != intArrayData) {jint* pIntData = env->GetIntArrayElements(intArrayData, JNI_FALSE);int size = env->GetArrayLength(intArrayData);for (int i = 0; i < size; i++) {pRecord->enable_reserved[i] = pIntData[i];}env->ReleaseIntArrayElements(intArrayData, pIntData, JNI_FALSE);env->DeleteLocalRef(intArrayData);}}*/field = env->GetFieldID(clazz, "password_investor", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->password_investor[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "password_phone", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->password_phone[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "name", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* utf_pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* pCharData = Utf8ToGb2312(utf_pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->name[i] = pCharData[i];}/*env->ReleaseStringUTFChars(stringData, pCharData);*/env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "country", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* utf_pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* pCharData = Utf8ToGb2312(utf_pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->country[i] = pCharData[i];}//env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "city", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* utf_pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* pCharData = Utf8ToGb2312(utf_pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->city[i] = pCharData[i];}//env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "state", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* gb_pCharData = Utf8ToGb2312(pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->state[i] = pCharData[i];}//env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "zipcode", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->zipcode[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "address", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* utf_pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* pCharData = Utf8ToGb2312(utf_pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->address[i] = pCharData[i];}//env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "lead_source", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->lead_source[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "phone", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->phone[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "email", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->email[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "comment", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* utf_pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);const char* pCharData = Utf8ToGb2312(utf_pCharData);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->comment[i] = pCharData[i];}//env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "id", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->id[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "status", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->status[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "regdate", "I");if (NULL != field) {pRecord->regdate = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "lastdate", "I");if (NULL != field) {pRecord->lastdate = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "leverage", "I");if (NULL != field) {pRecord->leverage = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "agent_account", "I");if (NULL != field) {pRecord->agent_account = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "timestamp", "I");if (NULL != field) {pRecord->timestamp = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "last_ip", "I");if (NULL != field) {pRecord->last_ip = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "balance", "D");if (NULL != field) {pRecord->balance = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "prevmonthbalance", "D");if (NULL != field) {pRecord->prevmonthbalance = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "prevbalance", "D");if (NULL != field) {pRecord->prevbalance = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "credit", "D");if (NULL != field) {pRecord->credit = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "interestrate", "D");if (NULL != field) {pRecord->interestrate = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "taxes", "D");if (NULL != field) {pRecord->taxes = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "prevmonthequity", "D");if (NULL != field) {pRecord->prevmonthequity = env->GetDoubleField(userRecord, field);}field = env->GetFieldID(clazz, "prevequity", "D");if (NULL != field) {pRecord->prevequity = env->GetDoubleField(userRecord, field);}/*field = env->GetFieldID(clazz, "reserved2", "[D");if (NULL != field) {jdoubleArray doubleArrayData = (jdoubleArray)env->GetObjectField(userRecord, field);if (NULL != doubleArrayData) {jdouble* pDoubleData = env->GetDoubleArrayElements(doubleArrayData, JNI_FALSE);int size = env->GetArrayLength(doubleArrayData);for (int i = 0; i < size; i++) {pRecord->reserved2[i] = pDoubleData[i];}env->ReleaseDoubleArrayElements(doubleArrayData, pDoubleData, JNI_FALSE);env->DeleteLocalRef(doubleArrayData);}}*/field = env->GetFieldID(clazz, "otp_secret", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->otp_secret[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "secure_reserved", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->secure_reserved[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "send_reports", "I");if (NULL != field) {pRecord->send_reports = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "mqid", "I");if (NULL != field) {pRecord->mqid = env->GetIntField(userRecord, field);}field = env->GetFieldID(clazz, "user_color", "I");if (NULL != field) {pRecord->user_color = env->GetIntField(userRecord, field);}/*field = env->GetFieldID(clazz, "unused", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->unused[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}*//*field = env->GetFieldID(clazz, "api_data", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(userRecord, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pRecord->api_data[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}*/return pRecord;
}/*
*获取用户组操作
*/
GroupCommandInfo* getGroupCommandInfoFromObject(JNIEnv* env, jobject info) {if (NULL == info) {return NULL;}jclass clazz = env->GetObjectClass(info);int size = sizeof(UserRecord);GroupCommandInfo* pGroupCommandInfo = (GroupCommandInfo*)malloc(size);if (NULL == pGroupCommandInfo) {printf("malloc GroupCommandInfo fail");return NULL;}memset(pGroupCommandInfo, 0, size);jfieldID field = env->GetFieldID(clazz, "len", "I");if (NULL != field) {pGroupCommandInfo->len = env->GetIntField(info, field);}field = env->GetFieldID(clazz, "command", "C");if (NULL != field) {pGroupCommandInfo->command = env->GetCharField(info, field);}field = env->GetFieldID(clazz, "newgroup", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(info, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pGroupCommandInfo->newgroup[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "leverage", "I");if (NULL != field) {pGroupCommandInfo->leverage = env->GetIntField(info, field);}field = env->GetFieldID(clazz, "reserved", "[I");if (NULL != field) {jintArray intArrayData = (jintArray)env->GetObjectField(info, field);if (NULL != intArrayData) {jint* pIntData = env->GetIntArrayElements(intArrayData, JNI_FALSE);int size = env->GetArrayLength(intArrayData);for (int i = 0; i < size; i++) {pGroupCommandInfo->reserved[i] = pIntData[i];}env->ReleaseIntArrayElements(intArrayData, pIntData, JNI_FALSE);env->DeleteLocalRef(intArrayData);}}return pGroupCommandInfo;
}/*
* 在线用户记录
*/
jobject getOnlineRecord(JNIEnv* env, jclass clazz, OnlineRecord tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setCounter", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.counter);}method = getMethod(env, clazz, "setReserved", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.reserved);}method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setIp", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ip);}method = getMethod(env, clazz, "setGroup", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.group));}return record;
}/*
*获取交易命令
*/
TradeTransInfo* getTradeTransInfoFromObject(JNIEnv* env, jobject tradeTransInfo) {if (NULL == tradeTransInfo) {return NULL;}jclass clazz = env->GetObjectClass(tradeTransInfo);int size = sizeof(TradeTransInfo);TradeTransInfo* pTradeTransInfo = (TradeTransInfo*)malloc(size);if (NULL == pTradeTransInfo) {printf("malloc TradeTransInfo fail");return NULL;}memset(pTradeTransInfo, 0, size);jfieldID field = env->GetFieldID(clazz, "type", "I");if (NULL != field) {pTradeTransInfo->type = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "reserved", "I");if (NULL != field) {pTradeTransInfo->reserved = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "cmd", "S");if (NULL != field) {pTradeTransInfo->cmd = env->GetShortField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "order", "I");if (NULL != field) {pTradeTransInfo->order = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "orderby", "I");if (NULL != field) {pTradeTransInfo->orderby = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "symbol", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(tradeTransInfo, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pTradeTransInfo->symbol[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "volume", "I");if (NULL != field) {pTradeTransInfo->volume = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "price", "D");if (NULL != field) {jdouble price = env->GetDoubleField(tradeTransInfo, field);if (pTradeTransInfo->type == TT_BR_BALANCE) {pTradeTransInfo->price = price; //保留两位小数}else {pTradeTransInfo->price = price;}}field = env->GetFieldID(clazz, "sl", "D");if (NULL != field) {jdouble sl = env->GetDoubleField(tradeTransInfo, field);if (sl != 0.0) {pTradeTransInfo->sl = sl;}}field = env->GetFieldID(clazz, "tp", "D");if (NULL != field) {jdouble tp = env->GetDoubleField(tradeTransInfo, field);if (tp != 0.0) {pTradeTransInfo->tp = tp;}}field = env->GetFieldID(clazz, "ie_deviation", "I");if (NULL != field) {pTradeTransInfo->ie_deviation = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "comment", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(tradeTransInfo, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pTradeTransInfo->comment[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "expiration", "I");if (NULL != field) {pTradeTransInfo->expiration = env->GetIntField(tradeTransInfo, field);}field = env->GetFieldID(clazz, "crc", "I");if (NULL != field) {pTradeTransInfo->crc = env->GetIntField(tradeTransInfo, field);}return pTradeTransInfo;
}/** 获取请求信息*/
jobject getTradeTransInfo(JNIEnv* env, jclass clazz, TradeTransInfo tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setType", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.type);}method = getMethod(env, clazz, "setReserved", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.reserved);}method = getMethod(env, clazz, "setCmd", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.cmd);}method = getMethod(env, clazz, "setOrder", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.order);}method = getMethod(env, clazz, "setOrderby", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.orderby);}method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setVolume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.volume);}method = getMethod(env, clazz, "setPrice", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.price);}method = getMethod(env, clazz, "setPrice", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.price);}method = getMethod(env, clazz, "setSl", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.sl);}method = getMethod(env, clazz, "setTp", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.tp);}method = getMethod(env, clazz, "setIe_deviation", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ie_deviation);}method = getMethod(env, clazz, "setComment", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.comment));}method = getMethod(env, clazz, "setExpiration", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.expiration);}method = getMethod(env, clazz, "setCrc", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.crc);}return record;
}/** 获取请求记录*/
jobject getRequestInfo(JNIEnv* env, jclass clazz, RequestInfo tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setId", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.id);}method = getMethod(env, clazz, "setStatus", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.status);}method = getMethod(env, clazz, "setTime", "(J)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.time);}method = getMethod(env, clazz, "setManager", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.manager);}method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setGroup", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.group));}method = getMethod(env, clazz, "setBalance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.balance);}method = getMethod(env, clazz, "setCredit", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.credit);}if (NULL != tr.prices) {method = getMethod(env, clazz, "setPrices", "([D)V");if (NULL != method) {//int size = sizeof(tr.prices);jdoubleArray prices = env->NewDoubleArray(2);env->SetDoubleArrayRegion(prices, 0, 2, tr.prices);env->CallVoidMethod(record, method, prices);}}method = getMethod(env, clazz, "setTrade", "([Lcom/metoo/mt4/bean/trade/TradeTransInfo;)V");if (NULL != method) {jclass _clazz = env->FindClass("com/metoo/mt4/bean/trade/TradeTransInfo");if (_clazz == NULL) {printf("clazz create [com/metoo/mt4/bean/trade/TradeTransInfo] error\n");}else {jobject _trade = getTradeTransInfo(env, _clazz, tr.trade);env->CallVoidMethod(record, method, _trade);}}method = getMethod(env, clazz, "setGw_volume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_volume);}method = getMethod(env, clazz, "setGw_order", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_order);}method = getMethod(env, clazz, "setGw_price", "(S)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.gw_price);}return record;
}/*
*获取保证金等级信息
*/
jobject getMarginLevel(JNIEnv* env, jclass clazz, MarginLevel tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setLogin", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.login);}method = getMethod(env, clazz, "setGroup", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.group));}method = getMethod(env, clazz, "setLeverage", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.leverage);}method = getMethod(env, clazz, "setUpdated", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.updated);}method = getMethod(env, clazz, "setBalance", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.balance);}method = getMethod(env, clazz, "setEquity", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.equity);}method = getMethod(env, clazz, "setVolume", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.volume);}method = getMethod(env, clazz, "setMargin", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin);}method = getMethod(env, clazz, "setMargin_free", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_free);}method = getMethod(env, clazz, "setMargin_level", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.margin_level);}method = getMethod(env, clazz, "setLevel_type", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.level_type);}return record;
}/*
* 获取报价
*/
jobject getTickInfo(JNIEnv* env, jclass clazz, TickInfo tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setSymbol", "(Ljava/lang/String;)V");if (NULL != method) {env->CallVoidMethod(record, method, env->NewStringUTF(tr.symbol));}method = getMethod(env, clazz, "setCtm", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ctm);}method = getMethod(env, clazz, "setBid", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.bid);}method = getMethod(env, clazz, "setAsk", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ask);}return record;
}/*
* 获取图表参数
*/
ChartInfo* getChartInfoFromObject(JNIEnv* env, jobject chartInfo) {if (NULL == chartInfo) {return NULL;}jclass clazz = env->GetObjectClass(chartInfo);int size = sizeof(ChartInfo);ChartInfo* pChartInfo = (ChartInfo*)malloc(size);if (NULL == pChartInfo) {printf("malloc ChartInfo fail");return NULL;}ZeroMemory(pChartInfo, size);jfieldID field = env->GetFieldID(clazz, "symbol", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(chartInfo, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pChartInfo->symbol[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "period", "I");if (NULL != field) {pChartInfo->period = env->GetIntField(chartInfo, field);}field = env->GetFieldID(clazz, "start", "I");if (NULL != field) {pChartInfo->start = env->GetIntField(chartInfo, field);}field = env->GetFieldID(clazz, "end", "I");if (NULL != field) {pChartInfo->end = env->GetIntField(chartInfo, field);}field = env->GetFieldID(clazz, "timesign", "I");if (NULL != field) {pChartInfo->timesign = env->GetIntField(chartInfo, field);}field = env->GetFieldID(clazz, "mode", "I");if (NULL != field) {pChartInfo->mode = env->GetIntField(chartInfo, field);}return pChartInfo;
}/*
* 获取K线
*/
jobject getRateInfo(JNIEnv* env, jclass clazz, long timesign, RateInfo tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setCtm", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ctm);}method = getMethod(env, clazz, "setOpen", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.open);}method = getMethod(env, clazz, "setHigh", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.high);}method = getMethod(env, clazz, "setLow", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.low);}method = getMethod(env, clazz, "setClose", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.close);}method = getMethod(env, clazz, "setVol", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.vol);}method = getMethod(env, clazz, "setTimesign", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, (jint)timesign);}return record;
}/*
* 获取品种报价
*/
TickRequest* getTickRequestFromObject(JNIEnv* env, jobject tickRequest) {if (NULL == tickRequest) {return NULL;}jclass clazz = env->GetObjectClass(tickRequest);int size = sizeof(TickRequest);TickRequest* pTickRequest = (TickRequest*)malloc(size);if (NULL == pTickRequest) {printf("malloc TickRequest fail");return NULL;}ZeroMemory(pTickRequest, size);jfieldID field = env->GetFieldID(clazz, "symbol", "Ljava/lang/String;");if (NULL != field) {jstring stringData = (jstring)env->GetObjectField(tickRequest, field);if (NULL != stringData) {const char* pCharData = env->GetStringUTFChars(stringData, JNI_FALSE);if (NULL != pCharData) {_int64 size = strlen(pCharData);for (int i = 0; i < size; i++) {pTickRequest->symbol[i] = pCharData[i];}env->ReleaseStringUTFChars(stringData, pCharData);env->DeleteLocalRef(stringData);}}}field = env->GetFieldID(clazz, "from", "I");if (NULL != field) {pTickRequest->from = env->GetIntField(tickRequest, field);}field = env->GetFieldID(clazz, "to", "I");if (NULL != field) {pTickRequest->to = env->GetIntField(tickRequest, field);}field = env->GetFieldID(clazz, "flags", "I");if (NULL != field) {pTickRequest->flags = env->GetIntField(tickRequest, field);}return pTickRequest;
}
/*
* 获取报价数据
*/
jobject getTickRecord(JNIEnv* env, jclass clazz, TickRecord tr) {jmethodID cid = env->GetMethodID(clazz, "<init>", "()V");jobject record = env->NewObject(clazz, cid);jmethodID method = getMethod(env, clazz, "setCtm", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ctm);}method = getMethod(env, clazz, "setBid", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.bid);}method = getMethod(env, clazz, "setAsk", "(D)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.ask);}method = getMethod(env, clazz, "setDatafeed", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.datafeed);}method = getMethod(env, clazz, "setFlags", "(I)V");if (NULL != method) {env->CallVoidMethod(record, method, tr.flags);}return record;
}

MT4 Manager java二次开发(二)相关推荐

  1. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  2. BarTender破解版 标签打印二次开发二维码C#预览图

    很多生产环节都需要条码打印的功能,这篇文章就介绍下如何使用C#实现条码打印的功能,希望对大家能有所帮助! 条码设计软件采用的是BarTender 10.1,在此基础上进行的二次开发. 运行成功的预览图 ...

  3. CAD二次开发--二维多段线Polyline与三维多段线Polyline3d创建总结

    今天在接到一个小需求并开发完成后,发现人家要的是三维polyline,而我画的确是二维的,所以这个必须要改过来!我心想:"这不是很简单么?2换一下3不就得了?".结果一顿折腾,发现 ...

  4. visionpro联合c#二次开发二

    本文已参与「新人创作礼」活动,一起开启掘金创作之路. 本次康耐视联合C#文档是最后一篇visionpro与C#联合的文章,后续我们将开始c#与halcon的编写或者vidi的文章. 首先我们定义所需要 ...

  5. 智能化IT运维平台建设方案,基于智和信通运维体系的高敏捷二次开发

    随着企业信息进程不断加速,运维人员需要面对越来越复杂的业务和越来越多样化的用户需求,不断扩展的应用需要越来越合理的模式.越来越智能的工具来保障运维能灵活便捷.安全稳定地开展.企业网络规模的不断扩大,从 ...

  6. 视频点播RTMP推流直播流媒体服务二次开发集成接口

    LiveQing流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTM ...

  7. EasyDSS流媒体服务器软件-搭建及二次开发接口对接说明示列

    EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能主要包含:直播.录像, 直播支持RTMP输 ...

  8. creo二次开发python_使用C#/.net语言进行ProE/Creo二次开发

    随便哪个版本的Visual studio 设置系统环境变量 通常这个环境变量在安装ProE的时候如果选择安装VBAPI就会自动设置 注意32位和64位操作系统路径是不同的.我的是64位操作系统. 然后 ...

  9. 用C语言编程函数求圆台体积,第六篇 AutoCAD二次开发技术.pdf

    第六章 ObjectARX 开发技术 1. AutoCAD二次开发概述 7. MFC对话框 2. ObjectARX简介 8. 搜索图形数据库及获取实体 3. 常用实体类和几何类 数据 4. 创建实体 ...

最新文章

  1. vue饼图统计_做可交互的统计图表,这套图形语法不容错过
  2. linux的shell的功能,linux shell中${ }的一些特异功能
  3. VS中添加lib文件,编译出错:LINK : fatal error LNK1104: 无法打开文件:×××.lib解决办法
  4. Windows Server 2016-Netdom Join加域并指定OU (一)
  5. 使用eBPFBCC提取内核网络流量信息
  6. 为什么需要使用到多线程
  7. python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载
  8. 最新去广告扒站仿站网源码
  9. 【CASS精品教程】CASS绘图软件入门初级教程超详细资料
  10. 【Blender 入门系列】 02 乐高方块渲染
  11. 一篇文带你从0到1了解建站及完成CMS系统编写
  12. 爬虫笔记37:android控件ListView的讲解、fiddler的安装与使用、fiddler和模拟器的配合使用、案例(爬取豆果美食app)
  13. NanoPi R2S 专用软件源
  14. 安全港到隐私护盾!美欧个人数据跨境流动20年政策变迁
  15. android studio安装插件查看db数据库
  16. Docker 安装 命令 数据卷 应用部署 网络优化 Dockerfile 服务编排Compose 私有仓库
  17. kubernetes node DiskPressure 压力
  18. CSS3使用自定义字
  19. Poetize4 玉蟾宫
  20. C语言判断越南语种程序,C语言window--在线翻译器(18页)-原创力文档

热门文章

  1. 基于SSM中小学家校联系系统
  2. 数学建模——种群竞争模型
  3. 如何实现一个最大的正方形
  4. 潘爱民老师“Windows内核技术介绍”演讲视频下载
  5. Spring Boot之Web开发
  6. Intel虚拟化技术(Intel VT-x)
  7. linux 配置JAVA 环境问题(一)/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
  8. 数据分析的统计学基础--方差分析
  9. 全国各省市名称和代号
  10. 第三方网站接入微信JS-SDK的分享自定义设置,微信分享小图标以及标题