コード例 #1
0
        public override Task <IList <MarketDataVM> > SubMarketDataAsync(IEnumerable <ContractKeyVM> instrIDList, int timeout = 10000)
        {
            var tcs = new TimeoutTaskCompletionSource <IList <MarketDataVM> >(timeout);

            var serialId = NextSerialId;

            #region callback
            MessageWrapper.RegisterAction <PBPricingDataList, ExceptionMessage>
                (MSG_ID_SUB_MD,
                (resp) =>
            {
                if (resp.Header?.SerialId == serialId)
                {
                    tcs.TrySetResult(SubMDSuccessAction(resp));
                }
            },
                (bizErr) =>
            {
                if (bizErr.SerialId == serialId)
                {
                    tcs.TrySetException(new MessageException(bizErr.MessageId, ErrorType.BIZ_ERROR, bizErr.Errorcode, bizErr.Description.ToStringUtf8()));
                }
            }
                );
            #endregion

            SendMessage(serialId, MSG_ID_SUB_MD, instrIDList);

            return(tcs.Task);
        }
コード例 #2
0
        public Task <IList <ContractKeyVM> > SubTradingDeskDataAsync(IEnumerable <ContractKeyVM> instrIDList, int timeout = 10000)
        {
            var msgId = (uint)BusinessMessageID.MSG_ID_SUB_TRADINGDESK_PRICING;

            var tcs = new TimeoutTaskCompletionSource <IList <ContractKeyVM> >(timeout);

            var serialId = NextSerialId;

            #region callback
            MessageWrapper.RegisterAction <PBInstrumentList, ExceptionMessage>
                (msgId,
                (resp) =>
            {
                if (resp.Header?.SerialId == serialId)
                {
                    tcs.TrySetResult(SubTDSuccessAction(resp));
                }
            },
                (bizErr) =>
            {
                if (bizErr.SerialId == serialId)
                {
                    tcs.TrySetException(new MessageException(bizErr.MessageId, ErrorType.BIZ_ERROR, bizErr.Errorcode, bizErr.Description.ToStringUtf8()));
                }
            }
                );
            #endregion

            SendMessage(serialId, msgId, instrIDList);

            return(tcs.Task);
        }