Callbacks

IApiComposeCallback extends ISubscribeApiCallback; an implementation must provide every signature below. Each event passes one model, not a list.

using TigerOpenAPI.Push;
using TigerOpenAPI.Push.Model;
using TigerOpenAPI.Quote.Pb;

sealed class PushCallback : IApiComposeCallback
{
    public void OrderStatusChange(OrderStatusData data) { }
    public void OrderTransactionChange(OrderTransactionData data) { }
    public void PositionChange(PositionData data) { }
    public void AssetChange(AssetData data) { }
    public void TradeTickChange(TradeTick data) { }
    public void FullTickChange(TickData data) { }
    public void QuoteChange(QuoteBasicData data) { }
    public void QuoteAskBidChange(QuoteBBOData data) { }
    public void OptionChange(QuoteBasicData data) { }
    public void OptionAskBidChange(QuoteBBOData data) { }
    public void FutureChange(QuoteBasicData data) { }
    public void FutureAskBidChange(QuoteBBOData data) { }
    public void DepthQuoteChange(QuoteDepthData data) { }
    public void KlineChange(KlineData data) { }
    public void StockTopPush(StockTopData data) { }
    public void OptionTopPush(OptionTopData data) { }
    public void SubscribeEnd(int id, string subject, string result) { }
    public void CancelSubscribeEnd(int id, string subject, string result) { }
    public void GetSubscribedSymbolEnd(SubscribedSymbol subscribedSymbol) { }
    public void Error(string errorMsg) { }
    public void Error(int id, int errorCode, string errorMsg) { }
    public void ConnectionClosed() { }
    public void ConnectionKickout(int errorCode, string errorMsg) { }
    public void ConnectionAck() { }
    public void ConnectionAck(int serverSendInterval, int serverReceiveInterval) { }
    public void HearBeat(string heartBeatContent) { }
    public void ServerHeartBeatTimeOut(string channelId) { }
}

Quote/option/future basic and BBO updates use separate callbacks. With UseFullTick=true, ticks go to FullTickChange(TickData); otherwise they go to TradeTickChange(TradeTick). Avoid blocking the callback thread.

These methods have no common JSON envelope: the decoder dispatches the concrete object shown in each signature according to protobuf DataType. Correlate a subscription command's uint return value with the ID/result delivered to SubscribeEnd, CancelSubscribeEnd, or GetSubscribedSymbolEnd.


Did this page help you?