1968 lines
45 KiB
C++
1968 lines
45 KiB
C++
/*
|
|
* Legal Notice
|
|
*
|
|
* This document and associated source code (the "Work") is a part of a
|
|
* benchmark specification maintained by the TPC.
|
|
*
|
|
* The TPC reserves all right, title, and interest to the Work as provided
|
|
* under U.S. and international laws, including without limitation all patent
|
|
* and trademark rights therein.
|
|
*
|
|
* No Warranty
|
|
*
|
|
* 1.1 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE INFORMATION
|
|
* CONTAINED HEREIN IS PROVIDED "AS IS" AND WITH ALL FAULTS, AND THE
|
|
* AUTHORS AND DEVELOPERS OF THE WORK HEREBY DISCLAIM ALL OTHER
|
|
* WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
|
|
* INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES,
|
|
* DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
|
|
* PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF
|
|
* WORKMANLIKE EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE.
|
|
* ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT,
|
|
* QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT
|
|
* WITH REGARD TO THE WORK.
|
|
* 1.2 IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THE WORK BE LIABLE TO
|
|
* ANY OTHER PARTY FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO THE
|
|
* COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS
|
|
* OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT,
|
|
* INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY,
|
|
* OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER AGREEMENT
|
|
* RELATING TO THE WORK, WHETHER OR NOT SUCH AUTHOR OR DEVELOPER HAD
|
|
* ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
*
|
|
* Contributors
|
|
* - Sergey Vasilevskiy
|
|
*/
|
|
|
|
/*
|
|
* Contains class definitions for all transactions.
|
|
*/
|
|
#ifndef TXN_HARNESS_STRUCTS_H
|
|
#define TXN_HARNESS_STRUCTS_H
|
|
|
|
#include "utilities/EGenStandardTypes.h"
|
|
#include "utilities/DateTime.h"
|
|
#include "utilities/MiscConsts.h"
|
|
#include "utilities/TableConsts.h"
|
|
#include "MEETradeRequestActions.h"
|
|
#include "CustomerAccountsAndPermissionsTable.h" // for iMaxAccountsPerCustomer
|
|
#include "utilities/BufferFiller.h"
|
|
|
|
namespace TPCE {
|
|
|
|
// declare the < operator for timestamps
|
|
bool operator<(const TIMESTAMP_STRUCT &ts1, const TIMESTAMP_STRUCT &ts2);
|
|
|
|
const INT32 iFinYears = 5;
|
|
const INT32 iFinQtrPerYear = 4;
|
|
const INT32 iMaxDailyHistory = 10;
|
|
const INT32 iMaxNews = 10;
|
|
|
|
// Broker-Volume
|
|
const INT32 min_broker_list_len = 20;
|
|
const INT32 max_broker_list_len = 40;
|
|
|
|
// Customer-Position
|
|
const INT32 max_acct_len = iMaxAccountsPerCust;
|
|
const INT32 min_hist_len = 10 * 1;
|
|
const INT32 max_hist_len = 10 * 3;
|
|
|
|
// Market-Feed
|
|
const INT32 max_feed_len = 20;
|
|
|
|
// Security-Detail
|
|
const INT32 min_day_len = 5;
|
|
const INT32 max_day_len = 20;
|
|
const INT32 max_fin_len = 20;
|
|
const INT32 max_news_len = 2;
|
|
const INT32 max_comp_len = 3;
|
|
|
|
// Trade-Status
|
|
const INT32 max_trade_status_len = 50;
|
|
|
|
// Data-Maintenance
|
|
const INT32 max_table_name = 30;
|
|
|
|
/*
|
|
* Macros for harness validation
|
|
*/
|
|
|
|
#define TXN_HARNESS_PROPAGATE_STATUS(code) \
|
|
if ((pTxnOutput->status >= 0) && ((code) < 0)) { \
|
|
/* propagate error over existing ok/warn status */ \
|
|
pTxnOutput->status = (code); \
|
|
} else if ((pTxnOutput->status == 0) && ((code) > 0)) { \
|
|
/* propagate warning over existing ok status */ \
|
|
pTxnOutput->status = (code); \
|
|
}
|
|
|
|
#define TXN_HARNESS_SET_STATUS_SUCCESS pTxnOutput->status = CBaseTxnErr::SUCCESS;
|
|
|
|
#define TXN_HARNESS_EARLY_EXIT_ON_ERROR \
|
|
if (pTxnOutput->status < 0) { \
|
|
return; \
|
|
}
|
|
|
|
/*
|
|
* Broker-Volume
|
|
*/
|
|
typedef class TBrokerVolumeTxnInput {
|
|
public:
|
|
// Transaction level inputs
|
|
char broker_list[max_broker_list_len][cB_NAME_len + 1];
|
|
char sector_name[cSC_NAME_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TBrokerVolumeTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PBrokerVolumeTxnInput,
|
|
TBrokerVolumeFrame1Input, // Single-Frame transaction
|
|
*PBrokerVolumeFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TBrokerVolumeTxnOutput {
|
|
public:
|
|
// Transaction level outputs
|
|
double volume[max_broker_list_len];
|
|
INT32 list_len;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TBrokerVolumeTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PBrokerVolumeTxnOutput;
|
|
|
|
typedef class TBrokerVolumeFrame1Output {
|
|
public:
|
|
// Frame level outputs
|
|
double volume[max_broker_list_len];
|
|
INT32 list_len;
|
|
char broker_name[max_broker_list_len][cB_NAME_len + 1];
|
|
|
|
TBrokerVolumeFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PBrokerVolumeFrame1Output;
|
|
|
|
/*
|
|
* Customer-Position
|
|
*/
|
|
typedef class TCustomerPositionTxnInput {
|
|
public:
|
|
TIdent acct_id_idx;
|
|
TIdent cust_id;
|
|
bool get_history;
|
|
char tax_id[cTAX_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TCustomerPositionTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionTxnInput;
|
|
|
|
typedef class TCustomerPositionTxnOutput {
|
|
public:
|
|
double asset_total[max_acct_len];
|
|
double cash_bal[max_acct_len];
|
|
TIdent acct_id[max_acct_len];
|
|
TTrade trade_id[max_hist_len];
|
|
TIdent c_ad_id;
|
|
INT32 qty[max_hist_len];
|
|
INT32 acct_len;
|
|
INT32 hist_len;
|
|
INT32 status;
|
|
TIMESTAMP_STRUCT hist_dts[max_hist_len];
|
|
TIMESTAMP_STRUCT c_dob;
|
|
char symbol[max_hist_len][cSYMBOL_len + 1];
|
|
char trade_status[max_hist_len][cST_NAME_len + 1];
|
|
char c_area_1[cAREA_len + 1];
|
|
char c_area_2[cAREA_len + 1];
|
|
char c_area_3[cAREA_len + 1];
|
|
char c_ctry_1[cCTRY_len + 1];
|
|
char c_ctry_2[cCTRY_len + 1];
|
|
char c_ctry_3[cCTRY_len + 1];
|
|
char c_email_1[cEMAIL_len + 1];
|
|
char c_email_2[cEMAIL_len + 1];
|
|
char c_ext_1[cEXT_len + 1];
|
|
char c_ext_2[cEXT_len + 1];
|
|
char c_ext_3[cEXT_len + 1];
|
|
char c_f_name[cF_NAME_len + 1];
|
|
char c_gndr[cGNDR_len + 1];
|
|
char c_l_name[cL_NAME_len + 1];
|
|
char c_local_1[cLOCAL_len + 1];
|
|
char c_local_2[cLOCAL_len + 1];
|
|
char c_local_3[cLOCAL_len + 1];
|
|
char c_m_name[cM_NAME_len + 1];
|
|
char c_st_id[cST_ID_len + 1];
|
|
char c_tier;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TCustomerPositionTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionTxnOutput;
|
|
|
|
typedef class TCustomerPositionFrame1Input {
|
|
public:
|
|
TIdent cust_id;
|
|
char tax_id[cTAX_ID_len + 1];
|
|
|
|
TCustomerPositionFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionFrame1Input;
|
|
|
|
typedef class TCustomerPositionFrame1Output {
|
|
public:
|
|
double asset_total[max_acct_len];
|
|
double cash_bal[max_acct_len];
|
|
TIdent acct_id[max_acct_len];
|
|
TIdent c_ad_id;
|
|
TIdent cust_id;
|
|
INT32 acct_len;
|
|
TIMESTAMP_STRUCT c_dob;
|
|
char c_area_1[cAREA_len + 1];
|
|
char c_area_2[cAREA_len + 1];
|
|
char c_area_3[cAREA_len + 1];
|
|
char c_ctry_1[cCTRY_len + 1];
|
|
char c_ctry_2[cCTRY_len + 1];
|
|
char c_ctry_3[cCTRY_len + 1];
|
|
char c_email_1[cEMAIL_len + 1];
|
|
char c_email_2[cEMAIL_len + 1];
|
|
char c_ext_1[cEXT_len + 1];
|
|
char c_ext_2[cEXT_len + 1];
|
|
char c_ext_3[cEXT_len + 1];
|
|
char c_f_name[cF_NAME_len + 1];
|
|
char c_gndr[cGNDR_len + 1];
|
|
char c_l_name[cL_NAME_len + 1];
|
|
char c_local_1[cLOCAL_len + 1];
|
|
char c_local_2[cLOCAL_len + 1];
|
|
char c_local_3[cLOCAL_len + 1];
|
|
char c_m_name[cM_NAME_len + 1];
|
|
char c_st_id[cST_ID_len + 1];
|
|
char c_tier;
|
|
|
|
TCustomerPositionFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionFrame1Output;
|
|
|
|
typedef class TCustomerPositionFrame2Input {
|
|
public:
|
|
TIdent acct_id;
|
|
|
|
TCustomerPositionFrame2Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionFrame2Input;
|
|
|
|
typedef class TCustomerPositionFrame2Output {
|
|
public:
|
|
TTrade trade_id[max_hist_len];
|
|
INT32 qty[max_hist_len];
|
|
INT32 hist_len;
|
|
TIMESTAMP_STRUCT hist_dts[max_hist_len];
|
|
char symbol[max_hist_len][cSYMBOL_len + 1];
|
|
char trade_status[max_hist_len][cST_NAME_len + 1];
|
|
|
|
TCustomerPositionFrame2Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PCustomerPositionFrame2Output;
|
|
|
|
/*
|
|
* Data-Maintenance
|
|
*/
|
|
typedef class TDataMaintenanceTxnInput {
|
|
public:
|
|
TIdent acct_id;
|
|
TIdent c_id;
|
|
TIdent co_id;
|
|
INT32 day_of_month;
|
|
INT32 vol_incr;
|
|
char symbol[cSYMBOL_len + 1];
|
|
char table_name[max_table_name + 1];
|
|
char tx_id[cTX_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TDataMaintenanceTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PDataMaintenanceTxnInput,
|
|
TDataMaintenanceFrame1Input, // Single-Frame transaction
|
|
*PDataMaintenanceFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TDataMaintenanceTxnOutput {
|
|
public:
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TDataMaintenanceTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PDataMaintenanceTxnOutput;
|
|
|
|
/*
|
|
* Market-Feed
|
|
*/
|
|
// MEE populates this class
|
|
typedef class TStatusAndTradeType {
|
|
public:
|
|
char status_submitted[cST_ID_len + 1];
|
|
char type_limit_buy[cTT_ID_len + 1];
|
|
char type_limit_sell[cTT_ID_len + 1];
|
|
char type_stop_loss[cTT_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TStatusAndTradeType() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTStatusAndTradeType;
|
|
|
|
// Incoming order from SendToMarket interface.
|
|
typedef class TTradeRequest {
|
|
public:
|
|
double price_quote;
|
|
TTrade trade_id;
|
|
INT32 trade_qty;
|
|
eMEETradeRequestAction eAction;
|
|
char symbol[cSYMBOL_len + 1];
|
|
char trade_type_id[cTT_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeRequest() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeRequest;
|
|
|
|
// A single entry on the ticker tape feed.
|
|
typedef class TTickerEntry {
|
|
public:
|
|
double price_quote;
|
|
INT32 trade_qty;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTickerEntry() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTickerEntry;
|
|
|
|
// Market-Feed data sent from MEE to sponsor provided SUT interface
|
|
typedef class TMarketFeedTxnInput {
|
|
public:
|
|
INT32 unique_symbols;
|
|
char zz_padding1[4];
|
|
TStatusAndTradeType StatusAndTradeType;
|
|
char zz_padding2[4];
|
|
TTickerEntry Entries[max_feed_len];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TMarketFeedTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketFeedTxnInput;
|
|
|
|
typedef class TMarketFeedTxnOutput {
|
|
public:
|
|
INT32 send_len;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TMarketFeedTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketFeedTxnOutput;
|
|
|
|
typedef class TMarketFeedFrame1Input {
|
|
public:
|
|
TStatusAndTradeType StatusAndTradeType;
|
|
char zz_padding[4];
|
|
TTickerEntry Entries[max_feed_len];
|
|
|
|
TMarketFeedFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketFeedFrame1Input;
|
|
|
|
typedef class TMarketFeedFrame1Output {
|
|
public:
|
|
INT32 num_updated;
|
|
INT32 send_len;
|
|
|
|
TMarketFeedFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketFeedFrame1Output;
|
|
|
|
/*
|
|
* Market-Watch
|
|
*/
|
|
typedef class TMarketWatchTxnInput {
|
|
public:
|
|
TIdent acct_id;
|
|
TIdent c_id;
|
|
TIdent ending_co_id;
|
|
TIdent starting_co_id;
|
|
TIMESTAMP_STRUCT start_day;
|
|
char industry_name[cIN_NAME_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TMarketWatchTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketWatchTxnInput,
|
|
TMarketWatchFrame1Input, // Single-Frame transaction
|
|
*PMarketWatchFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TMarketWatchTxnOutput {
|
|
public:
|
|
double pct_change;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TMarketWatchTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketWatchTxnOutput;
|
|
|
|
typedef class TMarketWatchFrame1Output {
|
|
public:
|
|
double pct_change;
|
|
|
|
TMarketWatchFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PMarketWatchFrame1Output;
|
|
|
|
/*
|
|
* Security-Detail
|
|
*/
|
|
typedef class TFinInfo {
|
|
public:
|
|
double assets;
|
|
double basic_eps;
|
|
double dilut_eps;
|
|
double invent;
|
|
double liab;
|
|
double margin;
|
|
double net_earn;
|
|
INT64 out_basic;
|
|
INT64 out_dilut;
|
|
double rev;
|
|
INT32 qtr;
|
|
INT32 year;
|
|
TIMESTAMP_STRUCT start_date;
|
|
DB_INDICATOR assets_ind;
|
|
DB_INDICATOR basic_eps_ind;
|
|
DB_INDICATOR dilut_eps_ind;
|
|
DB_INDICATOR invent_ind;
|
|
DB_INDICATOR liab_ind;
|
|
DB_INDICATOR margin_ind;
|
|
DB_INDICATOR net_earn_ind;
|
|
DB_INDICATOR out_basic_ind;
|
|
DB_INDICATOR out_dilut_ind;
|
|
DB_INDICATOR qtr_ind;
|
|
DB_INDICATOR rev_ind;
|
|
DB_INDICATOR start_date_ind;
|
|
DB_INDICATOR year_ind;
|
|
|
|
TFinInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PFinInfo;
|
|
|
|
typedef class TDailyHistory {
|
|
public:
|
|
double close;
|
|
double high;
|
|
double low;
|
|
INT64 vol;
|
|
TIMESTAMP_STRUCT date;
|
|
DB_INDICATOR close_ind;
|
|
DB_INDICATOR date_ind;
|
|
DB_INDICATOR high_ind;
|
|
DB_INDICATOR low_ind;
|
|
DB_INDICATOR vol_ind;
|
|
|
|
TDailyHistory() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PDailyHistory;
|
|
|
|
typedef class TNews {
|
|
public:
|
|
TIMESTAMP_STRUCT dts;
|
|
char auth[cNI_AUTHOR_len + 1];
|
|
char headline[cNI_HEADLINE_len + 1];
|
|
char item[cNI_ITEM_len + 1];
|
|
char src[cNI_SOURCE_len + 1];
|
|
char summary[cNI_SUMMARY_len + 1];
|
|
DB_INDICATOR auth_ind;
|
|
|
|
TNews() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(&dts, sizeof(dts));
|
|
BufferFiller::Clear(auth, sizeof(auth));
|
|
BufferFiller::Clear(headline, sizeof(headline));
|
|
|
|
// Purposely don't clear item since it is so large.
|
|
// BufferFiller::Clear( item, sizeof( item ));
|
|
|
|
BufferFiller::Clear(src, sizeof(src));
|
|
BufferFiller::Clear(summary, sizeof(summary));
|
|
BufferFiller::Clear(&auth_ind, sizeof(auth_ind));
|
|
}
|
|
|
|
} * PNews;
|
|
|
|
typedef class TSecurityDetailTxnInput {
|
|
public:
|
|
INT32 max_rows_to_return;
|
|
bool access_lob_flag;
|
|
TIMESTAMP_STRUCT start_day;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TSecurityDetailTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PSecurityDetailTxnInput,
|
|
TSecurityDetailFrame1Input, // Single-Frame transaction
|
|
*PSecurityDetailFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TSecurityDetailTxnOutput {
|
|
public:
|
|
INT64 last_vol;
|
|
INT32 news_len;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TSecurityDetailTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PSecurityDetailTxnOutput;
|
|
|
|
typedef class TSecurityDetailFrame1Output {
|
|
public:
|
|
double divid;
|
|
double last_open;
|
|
double last_price;
|
|
double pe_ratio;
|
|
double s52_wk_high;
|
|
double s52_wk_low;
|
|
double yield;
|
|
INT64 last_vol;
|
|
INT64 num_out;
|
|
INT32 day_len;
|
|
INT32 ex_close;
|
|
INT32 ex_num_symb;
|
|
INT32 ex_open;
|
|
INT32 fin_len;
|
|
INT32 news_len;
|
|
TIMESTAMP_STRUCT ex_date;
|
|
TIMESTAMP_STRUCT open_date;
|
|
TIMESTAMP_STRUCT s52_wk_high_date;
|
|
TIMESTAMP_STRUCT s52_wk_low_date;
|
|
TIMESTAMP_STRUCT start_date;
|
|
TDailyHistory day[max_day_len];
|
|
TFinInfo fin[max_fin_len];
|
|
TNews news[max_news_len];
|
|
char cp_co_name[max_comp_len][cCO_NAME_len + 1];
|
|
char cp_in_name[max_comp_len][cIN_NAME_len + 1];
|
|
char ceo_name[cCEO_NAME_len + 1];
|
|
char co_ad_cty[cAD_CTRY_len + 1];
|
|
char co_ad_div[cAD_DIV_len + 1];
|
|
char co_ad_line1[cAD_LINE_len + 1];
|
|
char co_ad_line2[cAD_LINE_len + 1];
|
|
char co_ad_town[cAD_TOWN_len + 1];
|
|
char co_ad_zip[cAD_ZIP_len + 1];
|
|
char co_desc[cCO_DESC_len + 1];
|
|
char co_name[cCO_NAME_len + 1];
|
|
char co_st_id[cST_ID_len + 1];
|
|
char ex_ad_cty[cAD_CTRY_len + 1];
|
|
char ex_ad_div[cAD_DIV_len + 1];
|
|
char ex_ad_line1[cAD_LINE_len + 1];
|
|
char ex_ad_line2[cAD_LINE_len + 1];
|
|
char ex_ad_town[cAD_TOWN_len + 1];
|
|
char ex_ad_zip[cAD_ZIP_len + 1];
|
|
char ex_desc[cEX_DESC_len + 1];
|
|
char ex_name[cEX_NAME_len + 1];
|
|
char s_name[cS_NAME_len + 1];
|
|
char sp_rate[cSP_RATE_len + 1];
|
|
|
|
TSecurityDetailFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
// Using BufferFiller::Clear( this, sizeof( *this )) would incur
|
|
// the overhead of clearing two LOB items in news array.
|
|
// So instead, clear members individually and call Clear on
|
|
// elements of news array to avoid clearing LOB space.
|
|
BufferFiller::Clear(&divid, sizeof(divid));
|
|
BufferFiller::Clear(&last_open, sizeof(last_open));
|
|
BufferFiller::Clear(&last_price, sizeof(last_price));
|
|
BufferFiller::Clear(&pe_ratio, sizeof(pe_ratio));
|
|
BufferFiller::Clear(&s52_wk_high, sizeof(s52_wk_high));
|
|
BufferFiller::Clear(&s52_wk_low, sizeof(s52_wk_low));
|
|
BufferFiller::Clear(&yield, sizeof(yield));
|
|
BufferFiller::Clear(&last_vol, sizeof(last_vol));
|
|
BufferFiller::Clear(&num_out, sizeof(num_out));
|
|
BufferFiller::Clear(&day_len, sizeof(day_len));
|
|
BufferFiller::Clear(&ex_close, sizeof(ex_close));
|
|
BufferFiller::Clear(&ex_num_symb, sizeof(ex_num_symb));
|
|
BufferFiller::Clear(&ex_open, sizeof(ex_open));
|
|
BufferFiller::Clear(&fin_len, sizeof(fin_len));
|
|
BufferFiller::Clear(&news_len, sizeof(news_len));
|
|
BufferFiller::Clear(&ex_date, sizeof(ex_date));
|
|
BufferFiller::Clear(&open_date, sizeof(open_date));
|
|
BufferFiller::Clear(&s52_wk_high_date, sizeof(s52_wk_high_date));
|
|
BufferFiller::Clear(&s52_wk_low_date, sizeof(s52_wk_low_date));
|
|
BufferFiller::Clear(&start_date, sizeof(start_date));
|
|
BufferFiller::Clear(day, sizeof(day));
|
|
BufferFiller::Clear(fin, sizeof(fin));
|
|
for (int ii = 0; ii < sizeof(news) / sizeof(news[0]); ++ii) {
|
|
news[ii].Clear();
|
|
}
|
|
BufferFiller::Clear(cp_co_name, sizeof(cp_co_name));
|
|
BufferFiller::Clear(cp_in_name, sizeof(cp_in_name));
|
|
BufferFiller::Clear(ceo_name, sizeof(ceo_name));
|
|
BufferFiller::Clear(co_ad_cty, sizeof(co_ad_cty));
|
|
BufferFiller::Clear(co_ad_div, sizeof(co_ad_div));
|
|
BufferFiller::Clear(co_ad_line1, sizeof(co_ad_line1));
|
|
BufferFiller::Clear(co_ad_line2, sizeof(co_ad_line2));
|
|
BufferFiller::Clear(co_ad_town, sizeof(co_ad_town));
|
|
BufferFiller::Clear(co_ad_zip, sizeof(co_ad_zip));
|
|
BufferFiller::Clear(co_desc, sizeof(co_desc));
|
|
BufferFiller::Clear(co_name, sizeof(co_name));
|
|
BufferFiller::Clear(co_st_id, sizeof(co_st_id));
|
|
BufferFiller::Clear(ex_ad_cty, sizeof(co_ad_cty));
|
|
BufferFiller::Clear(ex_ad_div, sizeof(co_ad_div));
|
|
BufferFiller::Clear(ex_ad_line1, sizeof(co_ad_line1));
|
|
BufferFiller::Clear(ex_ad_line2, sizeof(co_ad_line2));
|
|
BufferFiller::Clear(ex_ad_town, sizeof(co_ad_town));
|
|
BufferFiller::Clear(ex_ad_zip, sizeof(co_ad_zip));
|
|
BufferFiller::Clear(ex_desc, sizeof(co_desc));
|
|
BufferFiller::Clear(ex_name, sizeof(co_name));
|
|
BufferFiller::Clear(s_name, sizeof(s_name));
|
|
BufferFiller::Clear(sp_rate, sizeof(sp_rate));
|
|
}
|
|
|
|
} * PSecurityDetailFrame1Output;
|
|
|
|
/*
|
|
* Trade-Lookup
|
|
*/
|
|
typedef class TTradeLookupTxnInput {
|
|
public:
|
|
TTrade trade_id[TradeLookupFrame1MaxRows];
|
|
TIdent acct_id;
|
|
TIdent max_acct_id;
|
|
INT32 frame_to_execute; // which of the frames to execute
|
|
INT32 max_trades;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeLookupTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupTxnInput;
|
|
|
|
typedef class TTradeLookupTxnOutput {
|
|
public:
|
|
TTrade trade_list[TradeLookupMaxRows];
|
|
INT32 frame_executed; // confirmation of which frame was executed
|
|
INT32 num_found;
|
|
INT32 status;
|
|
bool is_cash[TradeLookupMaxRows];
|
|
bool is_market[TradeLookupMaxRows];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeLookupTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupTxnOutput;
|
|
|
|
typedef class TTradeLookupFrame1Input {
|
|
public:
|
|
TTrade trade_id[TradeLookupFrame1MaxRows];
|
|
INT32 max_trades;
|
|
|
|
TTradeLookupFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame1Input;
|
|
|
|
// Class to hold one trade information row
|
|
//
|
|
typedef class TTradeLookupFrame1TradeInfo {
|
|
public:
|
|
double bid_price;
|
|
double cash_transaction_amount;
|
|
double settlement_amount;
|
|
double trade_price;
|
|
bool is_cash;
|
|
bool is_market;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeLookupMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
char trade_history_status_id[TradeLookupMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR bid_price_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR is_market_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_price_ind;
|
|
|
|
TTradeLookupFrame1TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame1TradeInfo;
|
|
|
|
typedef class TTradeLookupFrame1Output {
|
|
public:
|
|
INT32 num_found;
|
|
TTradeLookupFrame1TradeInfo trade_info[TradeLookupFrame1MaxRows];
|
|
|
|
TTradeLookupFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame1Output;
|
|
|
|
typedef class TTradeLookupFrame2Input {
|
|
public:
|
|
TIdent acct_id;
|
|
INT32 max_trades;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
|
|
TTradeLookupFrame2Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame2Input;
|
|
|
|
// Class to hold one trade information row
|
|
//
|
|
typedef class TTradeLookupFrame2TradeInfo {
|
|
public:
|
|
double bid_price;
|
|
double cash_transaction_amount;
|
|
double settlement_amount;
|
|
double trade_price;
|
|
TTrade trade_id;
|
|
bool is_cash;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeLookupMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
char trade_history_status_id[TradeLookupMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR bid_price_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_id_ind;
|
|
DB_INDICATOR trade_price_ind;
|
|
|
|
TTradeLookupFrame2TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame2TradeInfo;
|
|
|
|
typedef class TTradeLookupFrame2Output {
|
|
public:
|
|
INT32 num_found;
|
|
TTradeLookupFrame2TradeInfo trade_info[TradeLookupFrame2MaxRows];
|
|
|
|
TTradeLookupFrame2Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame2Output;
|
|
|
|
typedef class TTradeLookupFrame3Input {
|
|
public:
|
|
TIdent max_acct_id;
|
|
INT32 max_trades;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
TTradeLookupFrame3Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame3Input;
|
|
|
|
// Class to hold one trade information row
|
|
//
|
|
typedef class TTradeLookupFrame3TradeInfo {
|
|
public:
|
|
double cash_transaction_amount;
|
|
double price;
|
|
double settlement_amount;
|
|
TIdent acct_id;
|
|
TTrade trade_id;
|
|
INT32 quantity;
|
|
bool is_cash;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeLookupMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
char trade_history_status_id[TradeLookupMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
char trade_type[cTT_ID_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeLookupMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR acct_id_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR price_ind;
|
|
DB_INDICATOR quantity_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_dts_ind;
|
|
DB_INDICATOR trade_id_ind;
|
|
DB_INDICATOR trade_type_ind;
|
|
|
|
TTradeLookupFrame3TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame3TradeInfo;
|
|
|
|
typedef class TTradeLookupFrame3Output {
|
|
public:
|
|
INT32 num_found;
|
|
TTradeLookupFrame3TradeInfo trade_info[TradeLookupFrame3MaxRows];
|
|
|
|
TTradeLookupFrame3Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame3Output;
|
|
|
|
typedef class TTradeLookupFrame4Input {
|
|
public:
|
|
TIdent acct_id;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
|
|
TTradeLookupFrame4Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame4Input;
|
|
|
|
// Class to hold one trade information row
|
|
//
|
|
typedef class TTradeLookupFrame4TradeInfo {
|
|
public:
|
|
TTrade holding_history_id;
|
|
TTrade holding_history_trade_id;
|
|
INT32 quantity_after;
|
|
INT32 quantity_before;
|
|
DB_INDICATOR holding_history_id_ind;
|
|
DB_INDICATOR holding_history_trade_id_ind;
|
|
DB_INDICATOR quantity_after_ind;
|
|
DB_INDICATOR quantity_before_ind;
|
|
|
|
TTradeLookupFrame4TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame4TradeInfo;
|
|
|
|
typedef class TTradeLookupFrame4Output {
|
|
public:
|
|
TTrade trade_id;
|
|
INT32 num_found;
|
|
INT32 num_trades_found;
|
|
TTradeLookupFrame4TradeInfo trade_info[TradeLookupFrame4MaxRows];
|
|
|
|
TTradeLookupFrame4Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeLookupFrame4Output;
|
|
|
|
/*
|
|
* Trade-Order
|
|
*/
|
|
typedef class TTradeOrderTxnInput {
|
|
public:
|
|
double requested_price;
|
|
TIdent acct_id;
|
|
INT32 is_lifo;
|
|
INT32 roll_it_back;
|
|
INT32 trade_qty;
|
|
INT32 type_is_margin;
|
|
char co_name[cCO_NAME_len + 1];
|
|
char exec_f_name[cF_NAME_len + 1];
|
|
char exec_l_name[cL_NAME_len + 1];
|
|
char exec_tax_id[cTAX_ID_len + 1];
|
|
char issue[cS_ISSUE_len + 1];
|
|
char st_pending_id[cST_ID_len + 1];
|
|
char st_submitted_id[cST_ID_len + 1];
|
|
char symbol[cSYMBOL_len + 1];
|
|
char trade_type_id[cTT_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeOrderTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderTxnInput;
|
|
|
|
typedef class TTradeOrderTxnOutput {
|
|
public:
|
|
double buy_value;
|
|
double sell_value;
|
|
double tax_amount;
|
|
TTrade trade_id;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeOrderTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderTxnOutput;
|
|
|
|
typedef class TTradeOrderFrame1Input {
|
|
public:
|
|
TIdent acct_id;
|
|
|
|
TTradeOrderFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame1Input;
|
|
|
|
typedef class TTradeOrderFrame1Output {
|
|
public:
|
|
TIdent broker_id;
|
|
TIdent cust_id;
|
|
INT32 cust_tier;
|
|
INT32 num_found;
|
|
INT32 tax_status;
|
|
char acct_name[cCA_NAME_len + 1];
|
|
char broker_name[cB_NAME_len + 1];
|
|
char cust_f_name[cF_NAME_len + 1];
|
|
char cust_l_name[cL_NAME_len + 1];
|
|
char tax_id[cTAX_ID_len + 1];
|
|
|
|
TTradeOrderFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame1Output;
|
|
|
|
typedef class TTradeOrderFrame2Input {
|
|
public:
|
|
TIdent acct_id;
|
|
char exec_f_name[cF_NAME_len + 1];
|
|
char exec_l_name[cL_NAME_len + 1];
|
|
char exec_tax_id[cTAX_ID_len + 1];
|
|
|
|
TTradeOrderFrame2Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame2Input;
|
|
|
|
typedef class TTradeOrderFrame2Output {
|
|
public:
|
|
char ap_acl[cACL_len + 1];
|
|
|
|
TTradeOrderFrame2Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame2Output;
|
|
|
|
typedef class TTradeOrderFrame3Input {
|
|
public:
|
|
double requested_price; // IN-OUT parameter
|
|
TIdent acct_id;
|
|
TIdent cust_id;
|
|
INT32 cust_tier;
|
|
INT32 is_lifo;
|
|
INT32 tax_status;
|
|
INT32 trade_qty;
|
|
INT32 type_is_margin;
|
|
char co_name[cCO_NAME_len + 1]; // IN-OUT parameter
|
|
char issue[cS_ISSUE_len + 1];
|
|
char st_pending_id[cST_ID_len + 1];
|
|
char st_submitted_id[cST_ID_len + 1];
|
|
char symbol[cSYMBOL_len + 1]; // IN-OUT parameter
|
|
char trade_type_id[cTT_ID_len + 1];
|
|
|
|
TTradeOrderFrame3Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame3Input;
|
|
|
|
typedef class TTradeOrderFrame3Output {
|
|
public:
|
|
double acct_assets;
|
|
double buy_value;
|
|
double charge_amount;
|
|
double comm_rate;
|
|
double market_price;
|
|
double requested_price; // IN-OUT parameter
|
|
double sell_value;
|
|
double tax_amount;
|
|
INT32 type_is_market;
|
|
INT32 type_is_sell;
|
|
char co_name[cCO_NAME_len + 1]; // IN-OUT parameter
|
|
char s_name[cS_NAME_len + 1];
|
|
char status_id[cST_ID_len + 1];
|
|
char symbol[cSYMBOL_len + 1]; // IN-OUT parameter
|
|
|
|
TTradeOrderFrame3Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame3Output;
|
|
|
|
typedef class TTradeOrderFrame4Input {
|
|
public:
|
|
double charge_amount;
|
|
double comm_amount;
|
|
double requested_price;
|
|
TIdent acct_id;
|
|
TIdent broker_id;
|
|
INT32 is_cash;
|
|
INT32 is_lifo;
|
|
INT32 trade_qty;
|
|
INT32 type_is_market;
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char status_id[cST_ID_len + 1];
|
|
char symbol[cSYMBOL_len + 1];
|
|
char trade_type_id[cTT_ID_len + 1];
|
|
|
|
TTradeOrderFrame4Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame4Input;
|
|
|
|
typedef class TTradeOrderFrame4Output {
|
|
public:
|
|
TTrade trade_id;
|
|
|
|
TTradeOrderFrame4Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeOrderFrame4Output;
|
|
|
|
/*
|
|
* Trade-Result
|
|
*/
|
|
// Trade-Result data sent from MEE to sponsor provided SUT interface
|
|
typedef class TTradeResultTxnInput {
|
|
public:
|
|
double trade_price;
|
|
TTrade trade_id;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeResultTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultTxnInput;
|
|
|
|
typedef class TTradeResultTxnOutput {
|
|
public:
|
|
double acct_bal;
|
|
TIdent acct_id;
|
|
INT32 load_unit;
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeResultTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultTxnOutput;
|
|
|
|
typedef class TTradeResultFrame1Input {
|
|
public:
|
|
TTrade trade_id;
|
|
|
|
TTradeResultFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame1Input;
|
|
|
|
typedef class TTradeResultFrame1Output {
|
|
public:
|
|
double charge;
|
|
TIdent acct_id;
|
|
INT32 hs_qty;
|
|
INT32 is_lifo;
|
|
INT32 num_found;
|
|
INT32 trade_is_cash;
|
|
INT32 trade_qty;
|
|
INT32 type_is_market;
|
|
INT32 type_is_sell;
|
|
char symbol[cSYMBOL_len + 1];
|
|
char type_id[cTT_ID_len + 1];
|
|
char type_name[cTT_NAME_len + 1];
|
|
|
|
TTradeResultFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame1Output;
|
|
|
|
typedef class TTradeResultFrame2Input {
|
|
public:
|
|
double trade_price;
|
|
TIdent acct_id;
|
|
TTrade trade_id;
|
|
INT32 hs_qty;
|
|
INT32 is_lifo;
|
|
INT32 trade_qty;
|
|
INT32 type_is_sell;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
TTradeResultFrame2Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame2Input;
|
|
|
|
typedef class TTradeResultFrame2Output {
|
|
public:
|
|
double buy_value;
|
|
double sell_value;
|
|
TIdent broker_id;
|
|
TIdent cust_id;
|
|
INT32 tax_status;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
|
|
TTradeResultFrame2Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame2Output;
|
|
|
|
typedef class TTradeResultFrame3Input {
|
|
public:
|
|
double buy_value;
|
|
double sell_value;
|
|
TIdent cust_id;
|
|
TTrade trade_id;
|
|
|
|
TTradeResultFrame3Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame3Input;
|
|
|
|
typedef class TTradeResultFrame3Output {
|
|
public:
|
|
double tax_amount;
|
|
|
|
TTradeResultFrame3Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame3Output;
|
|
|
|
typedef class TTradeResultFrame4Input {
|
|
public:
|
|
TIdent cust_id;
|
|
INT32 trade_qty;
|
|
char symbol[cSYMBOL_len + 1];
|
|
char type_id[cTT_ID_len + 1];
|
|
|
|
TTradeResultFrame4Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame4Input;
|
|
|
|
typedef class TTradeResultFrame4Output {
|
|
public:
|
|
double comm_rate;
|
|
char s_name[cS_NAME_len + 1];
|
|
|
|
TTradeResultFrame4Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame4Output;
|
|
|
|
typedef class TTradeResultFrame5Input {
|
|
public:
|
|
double comm_amount;
|
|
double trade_price;
|
|
TIdent broker_id;
|
|
TTrade trade_id;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
char st_completed_id[cST_ID_len + 1];
|
|
|
|
TTradeResultFrame5Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame5Input;
|
|
|
|
typedef class TTradeResultFrame6Input {
|
|
public:
|
|
double se_amount;
|
|
TIdent acct_id;
|
|
TTrade trade_id;
|
|
INT32 trade_is_cash;
|
|
INT32 trade_qty;
|
|
TIMESTAMP_STRUCT due_date;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
char s_name[cS_NAME_len + 1];
|
|
char type_name[cTT_NAME_len + 1];
|
|
|
|
TTradeResultFrame6Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame6Input;
|
|
|
|
typedef class TTradeResultFrame6Output {
|
|
public:
|
|
double acct_bal;
|
|
|
|
TTradeResultFrame6Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeResultFrame6Output;
|
|
|
|
/*
|
|
* Trade-Status
|
|
*/
|
|
typedef class TTradeStatusTxnInput {
|
|
public:
|
|
TIdent acct_id;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeStatusTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeStatusTxnInput,
|
|
TTradeStatusFrame1Input, // Single-Frame transaction
|
|
*PTradeStatusFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TTradeStatusTxnOutput {
|
|
public:
|
|
TTrade trade_id[max_trade_status_len];
|
|
INT32 status;
|
|
char status_name[max_trade_status_len][cST_NAME_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeStatusTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeStatusTxnOutput;
|
|
|
|
typedef class TTradeStatusFrame1Output {
|
|
public:
|
|
double charge[max_trade_status_len];
|
|
TTrade trade_id[max_trade_status_len];
|
|
INT32 trade_qty[max_trade_status_len];
|
|
INT32 num_found;
|
|
TIMESTAMP_STRUCT trade_dts[max_trade_status_len];
|
|
char ex_name[max_trade_status_len][cEX_NAME_len + 1];
|
|
char exec_name[max_trade_status_len][cEXEC_NAME_len + 1];
|
|
char s_name[max_trade_status_len][cS_NAME_len + 1];
|
|
char status_name[max_trade_status_len][cST_NAME_len + 1];
|
|
char symbol[max_trade_status_len][cSYMBOL_len + 1];
|
|
char type_name[max_trade_status_len][cTT_NAME_len + 1];
|
|
char broker_name[cB_NAME_len + 1];
|
|
char cust_f_name[cF_NAME_len + 1];
|
|
char cust_l_name[cL_NAME_len + 1];
|
|
|
|
TTradeStatusFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeStatusFrame1Output;
|
|
|
|
/*
|
|
* Trade-Update
|
|
*/
|
|
typedef class TTradeUpdateTxnInput {
|
|
public:
|
|
TTrade trade_id[TradeUpdateFrame1MaxRows];
|
|
TIdent acct_id;
|
|
TIdent max_acct_id;
|
|
INT32 frame_to_execute; // which of the frames to execute
|
|
INT32 max_trades;
|
|
INT32 max_updates;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeUpdateTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateTxnInput;
|
|
|
|
typedef class TTradeUpdateTxnOutput {
|
|
public:
|
|
TTrade trade_list[TradeUpdateMaxRows];
|
|
INT32 frame_executed; // confirmation of which frame was executed
|
|
INT32 num_found;
|
|
INT32 num_updated;
|
|
INT32 status;
|
|
bool is_cash[TradeUpdateMaxRows];
|
|
bool is_market[TradeUpdateMaxRows];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeUpdateTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateTxnOutput;
|
|
|
|
typedef class TTradeUpdateFrame1Input {
|
|
public:
|
|
TTrade trade_id[TradeUpdateFrame1MaxRows];
|
|
INT32 max_trades;
|
|
INT32 max_updates;
|
|
|
|
TTradeUpdateFrame1Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame1Input;
|
|
|
|
typedef class TTradeUpdateFrame1TradeInfo {
|
|
public:
|
|
double bid_price;
|
|
double cash_transaction_amount;
|
|
double settlement_amount;
|
|
double trade_price;
|
|
bool is_cash;
|
|
bool is_market;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
char trade_history_status_id[TradeUpdateMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR bid_price_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR is_market_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_price_ind;
|
|
|
|
TTradeUpdateFrame1TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame1TradeInfo;
|
|
|
|
typedef class TTradeUpdateFrame1Output {
|
|
public:
|
|
INT32 num_found;
|
|
INT32 num_updated;
|
|
TTradeUpdateFrame1TradeInfo trade_info[TradeUpdateFrame1MaxRows];
|
|
|
|
TTradeUpdateFrame1Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame1Output;
|
|
|
|
typedef class TTradeUpdateFrame2Input {
|
|
public:
|
|
TIdent acct_id;
|
|
INT32 max_trades;
|
|
INT32 max_updates;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
|
|
TTradeUpdateFrame2Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame2Input;
|
|
|
|
typedef class TTradeUpdateFrame2TradeInfo {
|
|
public:
|
|
double bid_price;
|
|
double cash_transaction_amount;
|
|
double settlement_amount;
|
|
double trade_price;
|
|
TTrade trade_id;
|
|
bool is_cash;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
char trade_history_status_id[TradeUpdateMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR bid_price_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_id_ind;
|
|
DB_INDICATOR trade_price_ind;
|
|
|
|
TTradeUpdateFrame2TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame2TradeInfo;
|
|
|
|
typedef class TTradeUpdateFrame2Output {
|
|
public:
|
|
INT32 num_found;
|
|
INT32 num_updated;
|
|
TTradeUpdateFrame2TradeInfo trade_info[TradeUpdateFrame2MaxRows];
|
|
|
|
TTradeUpdateFrame2Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame2Output;
|
|
|
|
typedef class TTradeUpdateFrame3Input {
|
|
public:
|
|
TIdent max_acct_id;
|
|
INT32 max_trades;
|
|
INT32 max_updates;
|
|
TIMESTAMP_STRUCT end_trade_dts;
|
|
TIMESTAMP_STRUCT start_trade_dts;
|
|
char symbol[cSYMBOL_len + 1];
|
|
|
|
TTradeUpdateFrame3Input() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame3Input;
|
|
|
|
typedef class TTradeUpdateFrame3TradeInfo {
|
|
public:
|
|
double cash_transaction_amount;
|
|
double price;
|
|
double settlement_amount;
|
|
TIdent acct_id;
|
|
TTrade trade_id;
|
|
INT32 quantity;
|
|
bool is_cash;
|
|
TIMESTAMP_STRUCT trade_history_dts[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
TIMESTAMP_STRUCT cash_transaction_dts;
|
|
TIMESTAMP_STRUCT settlement_cash_due_date;
|
|
TIMESTAMP_STRUCT trade_dts;
|
|
char trade_history_status_id[TradeUpdateMaxTradeHistoryRowsReturned][cTH_ST_ID_len + 1];
|
|
char cash_transaction_name[cCT_NAME_len + 1];
|
|
char exec_name[cEXEC_NAME_len + 1];
|
|
char s_name[cS_NAME_len + 1];
|
|
char settlement_cash_type[cSE_CASH_TYPE_len + 1];
|
|
char trade_type[cTT_ID_len + 1];
|
|
char type_name[cTT_NAME_len + 1];
|
|
DB_INDICATOR trade_history_dts_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR
|
|
trade_history_status_id_ind[TradeUpdateMaxTradeHistoryRowsReturned];
|
|
DB_INDICATOR acct_id_ind;
|
|
DB_INDICATOR cash_transaction_amount_ind;
|
|
DB_INDICATOR cash_transaction_dts_ind;
|
|
DB_INDICATOR cash_transaction_name_ind;
|
|
DB_INDICATOR exec_name_ind;
|
|
DB_INDICATOR is_cash_ind;
|
|
DB_INDICATOR price_ind;
|
|
DB_INDICATOR quantity_ind;
|
|
DB_INDICATOR s_name_ind;
|
|
DB_INDICATOR settlement_amount_ind;
|
|
DB_INDICATOR settlement_cash_due_date_ind;
|
|
DB_INDICATOR settlement_cash_type_ind;
|
|
DB_INDICATOR trade_dts_ind;
|
|
DB_INDICATOR trade_id_ind;
|
|
DB_INDICATOR trade_type_ind;
|
|
DB_INDICATOR type_name_ind;
|
|
|
|
TTradeUpdateFrame3TradeInfo() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame3TradeInfo;
|
|
|
|
typedef class TTradeUpdateFrame3Output {
|
|
public:
|
|
INT32 num_found;
|
|
INT32 num_updated;
|
|
TTradeUpdateFrame3TradeInfo trade_info[TradeUpdateFrame3MaxRows];
|
|
|
|
TTradeUpdateFrame3Output() {
|
|
Clear();
|
|
}
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeUpdateFrame3Output;
|
|
|
|
/*
|
|
* Trade-Cleanup
|
|
*/
|
|
typedef class TTradeCleanupTxnInput {
|
|
public:
|
|
TTrade start_trade_id;
|
|
char st_canceled_id[cST_ID_len + 1];
|
|
char st_pending_id[cST_ID_len + 1];
|
|
char st_submitted_id[cST_ID_len + 1];
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeCleanupTxnInput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeCleanupTxnInput,
|
|
TTradeCleanupFrame1Input, // Single-Frame transaction
|
|
*PTradeCleanupFrame1Input; // Single-Frame transaction
|
|
|
|
typedef class TTradeCleanupTxnOutput {
|
|
public:
|
|
INT32 status;
|
|
|
|
#ifdef ENABLE_DEFAULT_CONSTRUCTOR_ON_TXN_INPUT_OUTPUT
|
|
TTradeCleanupTxnOutput() {
|
|
Clear();
|
|
}
|
|
#endif
|
|
|
|
inline void Clear() {
|
|
BufferFiller::Clear(this, sizeof(*this));
|
|
}
|
|
|
|
} * PTradeCleanupTxnOutput;
|
|
|
|
} // namespace TPCE
|
|
|
|
#endif // #ifndef TXN_HARNESS_STRUCTS_H
|