Hi, my application subscribes rics from starting option chain record like 0#OPRA-A at 9:10 EST time every trading day. On each callback to onRefreshMsg, I saved handle value of OmmConsumerEvent::getHandle() into a set structure and start process this refreshmsg.
Then I continously received callback to onUpdateMsg and process it. At about 20:25, my application will call OmmConsumer::unregister() with all value from previous mentioned set structure iterately to release subscription for option rics.
On Feb 16th 13:48, my application suddently received many timeout message, which I formated with log message like:
02/17/21 02:49:40:431 [server/emaopt/consumer.cpp:371] [19:140175670441728] - status msg with symbol:TDGO192130000.U, state:Open / Suspect / Timeout / 'Request timed out.'
02/17/21 02:49:40:431 [server/emaopt/consumer.cpp:371] [19:140175670441728] - status msg with symbol:TDGO192130000.U, state:Open / Suspect / Timeout / 'Request timed out.'
02/17/21 02:49:40:432 [server/emaopt/consumer.cpp:371] [19:140175670441728] - status msg with symbol:TDGO192130000.U, state:Open / Suspect / Timeout / 'Request timed out.'
02/17/21 02:49:40:432 [server/emaopt/consumer.cpp:371] [19:140175670441728] - status msg with symbol:TDGC192131000.U, state:Open / Suspect / Timeout / 'Request timed out.'
02/17/21 02:49:40:432 [server/emaopt/consumer.cpp:371] [19:140175670441728] - status msg with symbol:TDGC192131000.U, state:Open / Suspect / Timeout / 'Request timed out.'
I found lost quote update msg for many rics, but there's still some update msg for some rics. The timeout continues and never restored to normal automatically. We contacted helpdesk and developer from your company, they found the ads main thread consumes 99% cpu. Seen from ADS Monitor screen, the open items has not decreased until I shutdown all my applications. (for detail, you may refer case 09632031).
My problem is why the unregister function not actually work at 20:25, as the open items never decrease and there were still lots of timeout log from my application.
Suppose I registered ric A and received RefreshMsg of A, I saved handle from RefreshMsg. Then if timeout occurs for A, I shall receive StatusMsg indicating 'Request timed out'. Will the handle in onStatusMsg same as onRefreshMsg for ric A? Here, I may suggest two case, one is my application still connected to TREP1, second is my application found network problem to TREP1 and try re-connect to TREP2. What will the value of handle be for both case ?
Also, I want to known when the first connection to TREP server will be established when my application starts runs? Is it when I create OmmConsumer object ? I found when in non-trading time, it seems my application keeps tcp connection to TREP server. Is there any method that I can close that connection if in non-trading time ?