示例#1
0
        //数据
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            int errcode  = lpMsg.GetErrorNo();     //获取错误代码
            int retcode  = lpMsg.GetReturnCode();  //获取返回码
            int function = lpMsg.GetFunction();

            if (errcode != 0)
            {
                MessageManager.GetInstance().Add(MessageType.Error, string.Format("异步接收出错:", lpMsg.GetErrorInfo()));
                return;
            }

            string      msg = "", entrustlist = "", batchno = "";
            uint        cnt      = 0;
            CT2UnPacker unpacker = null;

            unsafe
            {
                int   iLen   = 0;
                void *lpdata = lpMsg.GetContent(&iLen);
                unpacker = new CT2UnPacker(lpdata, (uint)iLen);
            }

            errcode = unpacker.GetInt("ErrorCode");
            if (errcode != 0)
            {
                msg = unpacker.GetStr("ErrorMsg");
                MessageManager.GetInstance().Add(MessageType.Error, string.Format("操作失败:{0}", msg));
                return;
            }

            //回报数据存于第1个数据集,第0个为错误消息
            unpacker.SetCurrentDatasetByIndex(1);
            cnt = unpacker.GetRowCount();
            while (unpacker.IsEOF() == 0)
            {
                entrustlist += unpacker.GetInt("entrust_no") + "|";
                batchno      = unpacker.GetInt("batch_no").ToString();
                unpacker.Next();
            }

            //返回消息
            switch (function)
            {
            case (int)EntrustHundsun.OptionFunction.SingleEntrust:
                MessageManager.GetInstance().Add(MessageType.TradeNotice, string.Format("单笔委托回报:成功,共1笔,|{0}", entrustlist));
                break;

            case (int)EntrustHundsun.OptionFunction.BasketEntrust:
                MessageManager.GetInstance().Add(MessageType.TradeNotice, string.Format("篮子委托回报:成功,批号={0}", batchno));
                break;

            case (int)EntrustHundsun.OptionFunction.Withdraw:
                MessageManager.GetInstance().Add(MessageType.TradeNotice, string.Format("委托撤单回报:成功,共{0}笔,|{1}", cnt, entrustlist));
                break;

            default:
                break;
            }
        }
示例#2
0
 public void Dispose()
 {
     _config.Dispose();
     _conn.Dispose();
     _config = null;
     _conn   = null;
 }
示例#3
0
 public override void OnSent(CT2Connection lpConnection, int hSend, void *lpData, int nLength, int nQueuingData)
 {
     //TODO:Fixed the convertion
     //IntPtr intPtr = new IntPtr(lpData);
     //_app.OnSent(lpConnection, hSend, intPtr, nLength, nQueuingData);
     _app.OnSent(lpConnection, hSend, lpData, nLength, nQueuingData);
 }
示例#4
0
 private void CloseT2()
 {
     config.Dispose();
     conn.Dispose();
     config        = null;
     conn          = null;
     textBox1.Text = "";
 }
示例#5
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            int iRetCode   = lpMsg.GetErrorNo();    //获取返回码
            int iErrorCode = lpMsg.GetReturnCode(); //获取错误码
            int iFunction  = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                Debug.Print("异步接收出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                if (iFunction == 620000)//1.0消息中心心跳
                {
                    Debug.Print("收到心跳!==>" + iFunction);
                    lpMsg.ChangeReq2AnsMessage();
                    connMain.SendBizMsg(lpMsg, 1);
                    return;
                }
                else if (iFunction == 620003 || iFunction == 620025) //收到发布过来的行情
                {
                    Debug.Print("收到主推消息!==>" + iFunction);
                    int         iKeyInfo  = 0;
                    void *      lpKeyInfo = lpMsg.GetKeyInfo(&iKeyInfo);
                    CT2UnPacker unPacker  = new CT2UnPacker(lpKeyInfo, (uint)iKeyInfo);
                    //this.ShowUnPacker(unPacker);
                    unPacker.Dispose();
                }
                else if (iFunction == 620001)
                {
                    Debug.Print("收到订阅应答!==>");
                    return;
                }
                else if (iFunction == 620002)
                {
                    Debug.Print("收到取消订阅应答!==>");
                    return;
                }

                CT2UnPacker unpacker = null;
                unsafe
                {
                    int   iLen   = 0;
                    void *lpdata = lpMsg.GetContent(&iLen);
                    unpacker = new CT2UnPacker(lpdata, (uint)iLen);
                }
                if (iFunction == 10001)
                {
                    int code = unpacker.GetInt("ErrCode");
                    if (code == 0)
                    {
                        unpacker.SetCurrentDatasetByIndex(1);
                        token = unpacker.GetStr("user_token");
                    }
                }
                //this.ShowUnPacker(unpacker);
            }
        }
示例#6
0
        public int Connect()
        {
            _config = new CT2Configinterface();
            _config.Load("t2sdk.ini");
            Conn      = new CT2Connection(_config);
            _callback = new Callbacktest();
            Conn.Create(_callback);
            var iret = Conn.Connect(5000);

            return(iret);
        }
示例#7
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            logger.Info("OnReceivedBizMsg: 接收业务数据!");

            //获取返回码
            int iRetCode = lpMsg.GetReturnCode();

            //获取错误码
            int iErrorCode = lpMsg.GetErrorNo();

            int iFunction = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                logger.Error("异步接收数据出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                CT2UnPacker unpacker = null;
                unsafe
                {
                    int   iLen   = 0;
                    void *lpdata = lpMsg.GetContent(&iLen);
                    unpacker = new CT2UnPacker(lpdata, (uint)iLen);
                }

                switch (iFunction)
                {
                case (int)FunctionCode.Login:
                {
                    var token = unpacker.GetStr("user_token");
                    if (string.IsNullOrEmpty(token))
                    {
                        LoginManager.Instance.LoginUser.Token = token;
                    }
                }
                break;

                case (int)FunctionCode.Logout:
                    break;

                default:
                    break;
                }

                PrintUnPack(unpacker);
                unpacker.Dispose();
            }

            lpMsg.Dispose();
        }
示例#8
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            logger.Info("OnReceivedBizMsg: 接收业务数据!");

            //获取返回码
            int iRetCode = lpMsg.GetReturnCode();

            //获取错误码
            int iErrorCode = lpMsg.GetErrorNo();

            int iFunction = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                logger.Error("异步接收数据出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                CT2UnPacker unpacker = null;
                unsafe
                {
                    int   iLen   = 0;
                    void *lpdata = lpMsg.GetContent(&iLen);
                    unpacker = new CT2UnPacker(lpdata, (uint)iLen);
                }

                switch (iFunction)
                {
                case (int)FunctionCode.QueryTradingInstance:
                {
                }
                break;

                case (int)FunctionCode.EntrustInstanceBasket:
                    break;

                case (int)FunctionCode.QueryEntrustInstance:
                    break;

                case (int)FunctionCode.QueryDealInstance:
                    break;

                default:
                    break;
                }

                unpacker.Dispose();
            }

            lpMsg.Dispose();
        }
示例#9
0
        public ConnectionCode Init()
        {
            ///新建连接
            //_config = new CT2Configinterface();
            //int iRet = _config.Load("config/t2sdk.ini");

            //if (iRet != 0)
            //{
            //    string msg = "读取连接配置对象失败!";
            //    logger.Error(msg);
            //    return ConnectionCode.ErrorReadConf;
            //}

            _conn = new CT2Connection(_config);
            T2SDKCallbackImpl callbackImpl = new T2SDKCallbackImpl(this);

            //使用Create2BizMsg调用,则收到业务回调是OnReceivedBizMsg
            int iRet = _conn.Create2BizMsg(callbackImpl);

            if (iRet != 0)
            {
                string msg = string.Format("连接对象初始化失败: {0}, {1}", iRet, _conn.GetErrorMsg(iRet));
                logger.Error(msg);
                return(ConnectionCode.ErrorInitConn);
            }

            try
            {
                iRet = _conn.Connect(_timeOut);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            if (iRet != 0)
            {
                string msg = string.Format("连接失败: {0}, {1}", iRet, _conn.GetErrorMsg(iRet));
                logger.Error(msg);
                return(ConnectionCode.ErrorConn);
            }
            else
            {
                string msg = "连接成功";
                logger.Info(msg);
            }

            _isInit = true;

            return(ConnectionCode.Success);
        }
示例#10
0
        public ConnectionCode Connect()
        {
            //新建连接
            _config = new CT2Configinterface();
            int iRet = _config.Load("config/t2sdk-subscriber.ini");

            if (iRet != 0)
            {
                string msg = "主推业务读取[config/t2sdk-subscriber.ini]连接配置对象失败!";
                logger.Error(msg);
                return(ConnectionCode.ErrorReadConf);
            }

            _conn = new CT2Connection(_config);

            //使用Create2BizMsg调用,则收到业务回调是OnReceivedBizMsg
            iRet = _conn.Create2BizMsg(this);
            if (iRet != 0)
            {
                string msg = string.Format("主推业务连接对象初始化失败: {0}, {1}", iRet, _conn.GetErrorMsg(iRet));
                logger.Error(msg);
                return(ConnectionCode.ErrorInitConn);
            }

            try
            {
                iRet = _conn.Connect(_timeOut);
            }
            catch (Exception e)
            {
                string msg = e.Message;
                logger.Error(msg);
            }
            if (iRet != 0)
            {
                string msg = string.Format("主推业务连接失败: {0}, {1}", iRet, _conn.GetErrorMsg(iRet));
                logger.Error(msg);

                return(ConnectionCode.ErrorConn);
            }
            else
            {
                string msg = "主推业务连接成功";
                logger.Info(msg);
            }

            _isInit = true;

            return(ConnectionCode.Success);
        }
示例#11
0
        public void Dispose()
        {
            if (_config != null)
            {
                _config.Dispose();
            }

            if (_conn != null)
            {
                _conn.Dispose();
            }
            _config = null;
            _conn   = null;
        }
示例#12
0
        private bool InitT2()
        {
            if (conn == null)
            {
                config = new CT2Configinterface();
                config.Load("t2sdk.ini");
                conn     = new CT2Connection(config);
                callback = new callbacktest(this);
                conn.Create(callback);
                int iret = conn.Connect(4000);
                textBox1.Text = "连接" + conn.GetErrorMsg(iret) + "\r\n" + textBox1.Text;
                if (iret != 0)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#13
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            UFXLogger.Info(logger, "OnReceivedBizMsg: 成功触发回调接收数据!");
            //获取返回码
            int iRetCode = lpMsg.GetReturnCode();

            //获取错误码
            int iErrorCode = lpMsg.GetErrorNo();

            int iFunction = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                logger.Error("异步接收数据出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                //Console.WriteLine("主推业务订阅 - 返回码:{0}, 错误码: {1}, 功能号: {2}", iRetCode, iErrorCode, iFunction);
                if (Enum.IsDefined(typeof(UFXFunctionCode), iFunction))
                {
                    UFXFunctionCode functionCode = (UFXFunctionCode)Enum.ToObject(typeof(UFXFunctionCode), iFunction);
                    switch (functionCode)
                    {
                    case UFXFunctionCode.MCHeartBeat:
                        break;

                    case UFXFunctionCode.MCRecvSubscribe:
                        break;

                    case UFXFunctionCode.MCRecvUnsubscribe:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    string msg = string.Format("为支持的功能号:{0}", iFunction);
                    logger.Error(msg);
                }
            }
        }
示例#14
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            UFXLogger.Info(logger, "OnReceivedBizMsg: 成功触发回调接收数据!");
            //获取返回码
            int iRetCode = lpMsg.GetReturnCode();

            //获取错误码
            int iErrorCode = lpMsg.GetErrorNo();

            int iFunction = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                logger.Error("异步接收数据出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                HandleReceivedBizMsg(SendType.Async, (UFXFunctionCode)iFunction, hSend, lpMsg);
            }
        }
示例#15
0
 public override void OnReceivedBiz(CT2Connection lpConnection, int hSend, String lppStr, CT2UnPacker lppUnPacker, int nResult)
 {
     if (nResult == 0 || nResult == 1)
     {
         while (lppUnPacker.IsEOF() != 1)
         {
             for (int i = 0; i < lppUnPacker.GetColCount(); i++)
             {
                 m_lpOwner.DisplayText(lppUnPacker.GetStrByIndex(i));
             }
             lppUnPacker.Next();
         }
     }
     else if (nResult < 0)
     {
         m_lpOwner.DisplayText(lpConnection.GetErrorMsg(nResult));
     }
     else if (nResult == 2)
     {
         m_lpOwner.DisplayText("解包失败");
     }
 }
示例#16
0
        public override void OnReceivedBizMsg(CT2Connection lpConnection, int hSend, CT2BizMessage lpMsg)
        {
            logger.Info("OnReceivedBizMsg: 成功建立安全连接!");
            //获取返回码
            int iRetCode = lpMsg.GetReturnCode();

            //获取错误码
            int iErrorCode = lpMsg.GetErrorNo();

            int iFunction = lpMsg.GetFunction();

            if (iRetCode != 0)
            {
                logger.Error("异步接收数据出错:" + lpMsg.GetErrorNo().ToString() + lpMsg.GetErrorInfo());
            }
            else
            {
                if (Enum.IsDefined(typeof(FunctionCode), iFunction))
                {
                    FunctionCode functionCode = (FunctionCode)Enum.ToObject(typeof(FunctionCode), iFunction);
                    if (_bizCallbackMap.ContainsKey(functionCode) && _bizCallbackMap[functionCode] != null)
                    {
                        _bizCallbackMap[functionCode](lpMsg);
                    }
                    else
                    {
                        string msg = string.Format("异步接收数据回调函数找不到 - 功能号:{0}", iFunction);
                        logger.Error(msg);
                    }
                }
                else
                {
                    string msg = string.Format("为支持的功能号:{0}", iFunction);
                    logger.Error(msg);
                    //throw new NotSupportedException(msg);
                }
            }
        }
示例#17
0
        public EntrustHundsun()
        {
            this.name   = "恒生UFX委托接口";
            this.Vendor = EntrustVendor.Hundsun;
            MessageManager.GetInstance().Add(MessageType.Warning, "对于x64的机器需要更换引用的ext_t2sdkEx.dll");

            try
            {
                CT2Configinterface config = new CT2Configinterface();
                config.Load(Config.GetInstance().GetParameter(Config.C_PATH_HUNDSUN_CONFIG).ToString());

                #region 打开连接
                //主连接
                connMain = new CT2Connection(config);
                connMain.Create2BizMsg(new UFXMainCallback());
                int ret = connMain.Connect(5000);
                if (ret != 0)
                {
                    MessageManager.GetInstance().Add(MessageType.Error, string.Format("连接{0}失败:main-{1}", config.GetString("t2sdk", "servers", ""), connMain.GetErrorMsg(ret)));
                    return;
                }

                //子连接
                connSub = new CT2Connection(config);
                connSub.Create(null);
                ret = connSub.Connect(5000);
                if (ret != 0)
                {
                    MessageManager.GetInstance().Add(MessageType.Error, string.Format("连接{0}失败:sub-{1}", config.GetString("t2sdk", "servers", ""), connSub.GetErrorMsg(ret)));
                }
                #endregion
            }
            catch (Exception ex)
            {
                MessageManager.GetInstance().Add(MessageType.Error, ex.Message + "请检查license.dat文件是否存在。");
                throw ex;
            }
        }
示例#18
0
        public EntrustHunsun()
        {
            try
            {
                CT2Configinterface config = new CT2Configinterface();
                config.Load("t2sdk.ini");

                //连接主
                connMain = new CT2Connection(config);
                connMain.Create2BizMsg(this);
                int ret = connMain.Connect(5000);
                if (ret != 0)
                {
                    Debug.Print(string.Format("Main:连接{0}失败 错误号 {1} 错误信息 {2}", config.GetString("t2sdk", "servers", ""), ret, connMain.GetErrorMsg(ret)));
                }
                else
                {
                    Debug.Print((string.Format("Main:连接{0}成功", config.GetString("t2sdk", "servers", ""))));
                }

                //连接子
                connSub = new CT2Connection(config);
                connSub.Create(null);
                ret = connSub.Connect(5000);
                if (ret != 0)
                {
                    Debug.Print(string.Format("Sub:连接{0}失败 错误号 {1} 错误信息 {2}", config.GetString("t2sdk", "servers", ""), ret, connSub.GetErrorMsg(ret)));
                }
                else
                {
                    Debug.Print((string.Format("Sub:连接{0}成功", config.GetString("t2sdk", "servers", ""))));
                }
            }
            catch (Exception e)
            {
                Debug.Print(e.Message);
            }
        }
示例#19
0
 public override void OnReceivedBizEx(CT2Connection lpConnection, int hSend, CT2RespondData lpRetData, string lppStr, CT2UnPacker lppUnPacker, int nResult)
 {
     throw new NotImplementedException();
 }
示例#20
0
 public override void OnConnect(CT2Connection lpConnection)
 {
     logger.Info("OnConnect:连接成功建立!");
 }
示例#21
0
 public override void OnClose(CT2Connection lpConnection)
 {
     //_conn.Close();
     logger.Info("OnClose: 连接断开!");
 }
示例#22
0
 public override unsafe void OnSent(CT2Connection lpConnection, int hSend, void *lpData, int nLength, int nQueuingData)
 {
     System.Console.WriteLine(@"连接成功!");
 }
示例#23
0
 //public override void OnSent(CT2Connection lpConnection, int hSend, IntPtr lpData, int nLength, int nQueuingData)
 //{
 //    logger.Info("OnSend: 发送数据成功!");
 //}
 public override void OnSent(CT2Connection lpConnection, int hSend, void *lpData, int nLength, int nQueuingData)
 {
     logger.Info("OnSend: 发送数据成功!");
 }
示例#24
0
 public override void OnRegister(CT2Connection lpConnection)
 {
     //3
     Debug.Print(MethodBase.GetCurrentMethod().Name);
 }
示例#25
0
 public override void OnReceivedBizEx(CT2Connection lpConnection, int hSend, CT2RespondData lpRetData, string lppStr, CT2UnPacker lppUnPacker, int nResult)
 {
     Debug.Print(MethodBase.GetCurrentMethod().Name);
 }
示例#26
0
 public override void OnRegister(CT2Connection lpConnection)
 {
     logger.Info("OnRegister: 服务端成功注册!");
 }
示例#27
0
 public override void OnSafeConnect(CT2Connection lpConnection)
 {
     logger.Info("OnSafeConnect: 成功建立安全连接!");
 }
示例#28
0
 public override void OnSafeConnect(CT2Connection lpConnection)
 {
     //2
     Debug.Print(MethodBase.GetCurrentMethod().Name);
 }
示例#29
0
 public override void OnClose(CT2Connection lpConnection)
 {
     Debug.Print(MethodBase.GetCurrentMethod().Name);
 }
示例#30
0
 public override void OnSent(CT2Connection lpConnection, int hSend, void *lpData, int nLength, int nQueuingData)
 {
     //4
     Debug.Print(MethodBase.GetCurrentMethod().Name);
 }