Files
email-tracker/external/duckdb/third_party/tpce-tool/include/main/TxnHarnessStructs.h
2025-10-24 19:21:19 -05:00

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