GitHub Viewer
#include "include/com_zts_xtp_quote_api_QuoteApi.h"
#include "include/XtpQuoteApi.h"
#include "include/handle.h"
#include "include/xtp/xquote_api_struct.h"
#include "include/InitGlog.h"
#include "include/glog/logging.h"
#include
#ifdef __linux__
#include
#endif
#include
#include
using namespace std;
JNIEXPORT void JNICALL Java_com_zts_xtp_quote_api_QuoteApi_initGlog
(JNIEnv *env, jobject obj, jstring logFolder,jstring logSubFolder,jstring jniLogLevel)
{
const char *char_xtp_data_folder = env->GetStringUTFChars(logFolder, 0);
string strLogFolder = string(char_xtp_data_folder);
const char *char_logSubFolder = env->GetStringUTFChars(logSubFolder, 0);
string strLogSubFolder = string(char_logSubFolder);
const char *char_jniLogLevel = env->GetStringUTFChars(jniLogLevel, 0);
string strJniLogLevel = string(char_jniLogLevel);
init_glog(strLogFolder, strLogSubFolder, strJniLogLevel);
env->ReleaseStringUTFChars(logFolder, char_xtp_data_folder);
env->ReleaseStringUTFChars(logSubFolder, char_logSubFolder);
env->ReleaseStringUTFChars(jniLogLevel, char_jniLogLevel);
}
void copy_tickers(JNIEnv *env,jobjectArray tickers,char *pTickers[],int count)
{
for(int i=0; iGetObjectArrayElement(tickers, i);
const char *char_ticker = env->GetStringUTFChars(jstr, 0);
std::string strTicker(char_ticker);
strcpy(pTickers[i], strTicker.c_str());
env->ReleaseStringUTFChars(jstr, char_ticker);
}
}
JNIEXPORT void JNICALL Java_com_zts_xtp_quote_api_QuoteApi_quoteInit(JNIEnv *env,
jobject obj, jshort clientId, jstring logFolder, jobject jLogLevel, jint threadNum, jint ringBufferSize, jint fullMarketDataAvailable)
{
XtpQuote *pquote = new XtpQuote(threadNum, ringBufferSize, fullMarketDataAvailable);
pquote->setClientId(clientId);
// pquote->setFullMarketDataAvailable(fullMarketDataAvailable);
const char *char_xtp_data_folder = env->GetStringUTFChars(logFolder, 0);
pquote->setFilePath(char_xtp_data_folder);
LOG(ERROR) FindClass("com/zts/xtp/quote/model/response/SpecificTickerResponse");
pquote->setXTPSTClass((jclass)env->NewGlobalRef(xtpstClass));
jclass xtpmdClass = env->FindClass("com/zts/xtp/quote/model/response/DepthMarketDataResponse");
pquote->setXTPMDClass((jclass)env->NewGlobalRef(xtpmdClass));
jclass xtpmdseClass = env->FindClass("com/zts/xtp/quote/model/response/MarketDataStockExDataResponse");
pquote->setXTPMDSEClass((jclass)env->NewGlobalRef(xtpmdseClass));
jclass xtpmdoeClass = env->FindClass("com/zts/xtp/quote/model/response/MarketDataOptionExDataResponse");
pquote->setXTPMDOEClass((jclass)env->NewGlobalRef(xtpmdoeClass));
jclass xtpmdbeClass = env->FindClass("com/zts/xtp/quote/model/response/MarketDataBondExDataResponse");
pquote->setXTPMDBEClass((jclass)env->NewGlobalRef(xtpmdbeClass));
jclass depthMarketDataExtClass = env->FindClass("com/zts/xtp/quote/model/response/DepthMarketDataExResponse");
pquote->setDepthMarketDataClass((jclass)env->NewGlobalRef(depthMarketDataExtClass));
jclass xtpqsiClass = env->FindClass("com/zts/xtp/quote/model/response/TickerInfoResponse");
pquote->setXTPQSIClass((jclass)env->NewGlobalRef(xtpqsiClass));
jclass xtpqfiClass = env->FindClass("com/zts/xtp/quote/model/response/TickerFullInfoResponse");
pquote->setXTPQFIClass((jclass)env->NewGlobalRef(xtpqfiClass));
jclass xtpobClass = env->FindClass("com/zts/xtp/quote/model/response/OrderBookResponse");
pquote->setXTPOBClass((jclass)env->NewGlobalRef(xtpobClass));
jclass xtptbtClass = env->FindClass("com/zts/xtp/quote/model/response/TickByTickResponse");
pquote->setXTPTBTClass((jclass)env->NewGlobalRef(xtptbtClass));
jclass xtptbteClass = env->FindClass("com/zts/xtp/quote/model/response/TickByTickEntrustResponse");
pquote->setXTPTickByTickEntrust((jclass) env->NewGlobalRef(xtptbteClass));
jclass xtptbttClass = env->FindClass("com/zts/xtp/quote/model/response/TickByTickTradeResponse");
pquote->setXTPTickByTickTrade((jclass) env->NewGlobalRef(xtptbttClass));
jclass xtptpiClass = env->FindClass("com/zts/xtp/quote/model/response/TickerPriceInfoResponse");
pquote->setXTPTPIClass((jclass)env->NewGlobalRef(xtptpiClass));
pquote->setPluginJobject(env->NewGlobalRef(obj));
jclass logLevelClass = env->FindClass("com/zts/xtp/common/enums/XtpLogLevel");
jmethodID getLogLevelValue = env->GetMethodID(logLevelClass, "getValue", "()I");
XTP_LOG_LEVEL logLevel = (XTP_LOG_LEVEL)env->CallIntMethod(jLogLevel, getLogLevelValue);
pquote->Init(logLevel);
setHandle(env, obj, pquote);
env->ReleaseStringUTFChars(logFolder, char_xtp_data_folder);
}
JNIEXPORT void JNICALL Java_com_zts_xtp_quote_api_QuoteApi_disconnect (JNIEnv *env, jobject obj)
{
XtpQuote *pquote = getHandle(env, obj);
//pquote->Release();
LOG(INFO) GetStringUTFChars(ip, 0);
std::string strIp(char_ip);
const char *char_userName = env->GetStringUTFChars(userName, 0);
std::string strUsername(char_userName);
const char *char_password = env->GetStringUTFChars(password, 0);
std::string strPassword(char_password);
const char *local_ip = env->GetStringUTFChars(localIp, 0);
std::string strLocalIp(local_ip);
pquote->setServerIp(strIp.c_str());
pquote->setServerPort(port);
pquote->setUsername(strUsername.c_str());
pquote->setPassword(strPassword.c_str());
pquote->setServerLocalIp(strLocalIp.c_str());
jclass protocolClass = env->FindClass("com/zts/xtp/common/enums/TransferProtocol");
jmethodID getProtoColValue = env->GetMethodID(protocolClass, "getValue", "()I");
XTP_PROTOCOL_TYPE protocol = (XTP_PROTOCOL_TYPE)env->CallIntMethod(jProtocol, getProtoColValue);
pquote->setSocketType(protocol);
int sessionId = pquote->Login();
env->ReleaseStringUTFChars(ip, char_ip);
env->ReleaseStringUTFChars(userName, char_userName);
env->ReleaseStringUTFChars(password, char_password);
env->ReleaseStringUTFChars(localIp, local_ip);
return sessionId;
}
JNIEXPORT jint JNICALL Java_com_zts_xtp_quote_api_QuoteApi_logout (JNIEnv *env, jobject obj)
{
XtpQuote *pquote = getHandle(env, obj);
int result = pquote->Logout();
return result;
}
JNIEXPORT void JNICALL Java_com_zts_xtp_quote_api_QuoteApi_setHeartBeatInterval (JNIEnv *env, jobject obj, jint interval)
{
XtpQuote *pquote = getHandle(env, obj);
if (pquote) {
pquote->SetHeartBeatInterval(interval);
}else{
LOG(ERROR) SetUDPBufferSize(size);
}else{
LOG(ERROR) SetUDPRecvThreadAffinity(cpuNo);
}else{
LOG(ERROR) SetUDPParseThreadAffinity(cpuNo);
}else{
LOG(ERROR) SetUDPSeqLogOutPutFlag(flag);
}else{
LOG(ERROR) SubscribeAllOptionTickByTick((XTP_EXCHANGE_TYPE)exchangeType);
}
JNIEXPORT jint JNICALL Java_com_zts_xtp_quote_api_QuoteApi_unSubscribeAllOptionTickByTick(JNIEnv *env, jobject obj, jint exchangeType){
XtpQuote *pquote = getHandle(env, obj);
return pquote->UnSubscribeAllOptionTickByTick((XTP_EXCHANGE_TYPE)exchangeType);
}
JNIEXPORT jint JNICALL Java_com_zts_xtp_quote_api_QuoteApi_queryAllTickersFullInfo(JNIEnv *env, jobject obj, jint exchangeType){
XtpQuote *pquote = getHandle(env, obj);
return pquote->QueryAllTickersFullInfo((XTP_EXCHANGE_TYPE)exchangeType);
}