Syntax
typedef NxCoreCallback(__stdcall *NxCoreSetCallback) (NxCoreCallback nxCoreCallback); #define cszNxCoreSetCallback "sNxCoreSetCallback" int __stdcall SetCallback(NxCoreCallback nxCoreCallback);
Parameters
nxCoreCallback
Specifies the function to use as a callback from now on.
Return Value
Returns the old nxCoreCallback function
Here's an example of switching callbacks
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include "NxCoreAPI.h" #include "NxCoreAPI_Wrapper_C++.h" NxCoreClass NxCore; void PrintSymbol(const NxCoreMessage *pNxCoreMsg) { // If a valid option header if (pNxCoreMsg->coreHeader.pnxOptionHdr) { // If pnxsDateAndStrike->String[1] == ' ', then this symbol is in new OSI format. if (pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[1]==' ') { // Construct OSI symbol printf("Symbol: %s%02d%02d%02d%c%08d\n", pNxCoreMsg->coreHeader.pnxStringSymbol->String, pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Year-2000, pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Month, pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Day, (pNxCoreMsg->coreHeader.pnxOptionHdr->PutCall == 0) ? 'C' : 'P', pNxCoreMsg->coreHeader.pnxOptionHdr->strikePrice); } // Otherwise the symbol is in old OPRA format. else { printf("Symbol: %s%c%c\n", pNxCoreMsg->coreHeader.pnxStringSymbol->String, pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[0], pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[1]); } } // Else non-option, print symbol only else printf("Symbol: %s\n",pNxCoreMsg->coreHeader.pnxStringSymbol->String); } int __stdcall nxCoreCallback(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage) { // normal stuff return NxCALLBACKRETURN_CONTINUE; } int __stdcall nxCoreCallbackInitialSpin(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage) { switch (pNxCoreMessage->MessageType) { case NxMSG_SYMBOLSPIN: PrintSymbol(pNxCoreMessage); break; case NxMSG_STATUS: switch (pNxCoreSys->Status) { case NxCORESTATUS_SYMBOLSPIN: if (pNxCoreSys->StatusData == NxCSSYMBOLSPIN_COMPLETE) { NxCore.SetCallback(nxCoreCallback); return NxCALLBACKRETURN_RESTART; } break; } break; } return NxCALLBACKRETURN_CONTINUE; } int main(int argc, char** argv) { if (!NxCore.LoadNxCore("NxCoreAPI64.dll") && !NxCore.LoadNxCore("NxCoreAPI.dll")) { printf("loading library failed\n"); return -1; } NxCore.ProcessTape(argv[1], 0, NxCF_EXCLUDE_CRC_CHECK, 0, nxCoreCallbackInitialSpin); return 0; }