Beispiel #1
0
        /**************************************************************************
        * Note: 请求板块明细表数据 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        *		szCode,请求时传递码表代码,
        *		nSize: 保存szCode的字节数
        *		nRequestId : 0=增量;1=全量;2=指定类别全量
        *		IsImportant:是否为重要板块
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateBlockDetail(long ctLast, String szCode, int nSize, int nRequestId, bool bIsImportant)
        {
            DMReqInput reqInput = new DMReqInput();

            nSize         = (nSize == 0 ? 70 : nSize);
            reqInput.size = nSize;
            if (bIsImportant)
            {
                reqInput.itemid = SDATA_TYPE_BLOCKDETAIL_IMPT;
            }
            else
            {
                reqInput.itemid = SDATA_TYPE_BLOCKDETAIL_NOTIMPT;
            }

            reqInput.timestamp = ctLast;
            reqInput.requestid = nRequestId;//测试
            if (szCode == null)
            {
                szCode = "";
            }
            reqInput.ptr = GetStringBytes(szCode, 70);
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 请求码表数据 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        *		szCode,请求时传递码表代码,
        *		nRequestId : 0=增量;1=全量;2=指定类别全量
        *		IsImportant:是否为重要板块
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateKeySpriteData(long ctLast, String szCode, int nRequestId, bool bIsImportant)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.size = 20;
            if (bIsImportant)
            {
                reqInput.itemid = SDATA_TYPE_KEYSPRITE_IMPORTANT;
            }
            else
            {
                reqInput.itemid = SDATA_TYPE_KEYSPRITE_NOTIMPORTANT;
            }

            reqInput.timestamp = ctLast;
            reqInput.requestid = nRequestId;
            if (szCode == null && szCode.Length > 0)
            {
                szCode = "";
            }
            reqInput.ptr = GetStringBytes(szCode, 20);
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
Beispiel #3
0
        /// <summary>
        /// 请求数据
        /// </summary>
        /// <param name="dmReq">请求结构</param>
        /// <returns>返回结构</returns>
        protected DMRetOutput GetDMRet(DMReqInput dmReq)
        {
            DMRetOutput dmRet = new DMRetOutput();

            using (MemoryStream ms = new MemoryStream())
            {
                using (BinaryWriter bw = new BinaryWriter(ms))
                {
                    byte[] result = dmReq.Write(ms, bw);
                    using (MemoryStream ms2 = new MemoryStream(result))
                    {
                        using (BinaryReader br = new BinaryReader(ms2))
                        {
                            dmRet.Read(result, br);
                        }
                    }
                    result = null;
                }
            }
            if (dmRet.itemid == 0)
            {
                dmRet.itemid = dmReq.itemid;
            }
            return(dmRet);
        }
        /**************************************************************************
        * Note: 更新状态 测试通过
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateState()
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = 997;
            reqInput.timestamp = 0;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 更新FuncompCode 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateFuncompCode(long nTime)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = SDATA_TYPE_FUNDCOMPCODE;
            reqInput.timestamp = nTime;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 码表目录下TYPE文件数据更新 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateTypeFile(long nTime)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = SDATA_TYPE_TYPE;
            reqInput.timestamp = nTime;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 码表目录下URL文件数据删除获取 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateUrlFileDelete(long ctLast)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = SDATA_TYPE_URL_DELETE;
            reqInput.timestamp = ctLast;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 请求行情AREAINDGNLISH_GN文件数据 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateAREAINDGNLISH_GN(long nTime)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = SDATA_TYPE_AREAINDGNLISH_GN;
            reqInput.timestamp = nTime;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
        /**************************************************************************
        * Note: 请求数据 sdata/china/BKZSDYGX 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateBKZSDYGX(long nTime)
        {
            DMReqInput reqInput = new DMReqInput();;

            reqInput.itemid    = SDATA_TYPE_BKZSDYGX;
            reqInput.timestamp = nTime;
            reqInput.requestid = 1;
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
Beispiel #10
0
        /// <summary>
        /// 获取板块项
        /// </summary>
        /// <returns>板块项</returns>
        public List <DMBlockItem> GetBlockItems()
        {
            String             code  = "";
            long               time  = 0;
            List <DMBlockItem> items = new List <DMBlockItem>();

            while (true)
            {
                DMRetOutput dm1      = UpdateBlockTree(time, 1, 0, code);
                DMBlockItem lastItem = null;
                using (MemoryStream ms = new MemoryStream(dm1.ptr))
                {
                    using (BinaryReader br = new BinaryReader(ms))
                    {
                        int size = dm1.size;
                        for (int i = 0; i < size; i++)
                        {
                            DMBlockItem item = new DMBlockItem();
                            item.innerCode  = GetBytesString(br, 16);
                            item.code       = GetBytesString(br, 50);
                            item.name       = GetBytesString(br, 200);
                            item.parentcode = GetBytesString(br, 50);
                            item.typcode    = GetBytesString(br, 10);
                            item.typname    = GetBytesString(br, 200);
                            item.tmpl       = GetBytesString(br, 10);
                            item.order      = br.ReadInt32();
                            item.timestamp  = br.ReadInt64();
                            items.Add(item);
                            lastItem = item;
                        }
                    }
                }
                if (!dm1.last)
                {
                    if (lastItem != null)
                    {
                        code = lastItem.code;
                        time = lastItem.timestamp;
                    }
                }
                if (dm1.last)
                {
                    break;
                }
            }
            code = "";
            time = 0;
            return(items);
        }
Beispiel #11
0
        /**************************************************************************
        * Note: 请求板块树 数据 测试通过
        * args: ctLast,请求时传递的时间戳,服务端从该时间戳开始数据
        *		nRequestId : 0=增量;1=全量;2=指定类别全量
        * void:
        *
        **************************************************************************/
        public DMRetOutput UpdateBlockTree(long ctLast, int nRequestId, int nSize, String szCode)
        {
            DMReqInput reqInput = new DMReqInput();

            reqInput.itemid    = SDATA_TYPE_BLOCKDATATREE;
            reqInput.timestamp = ctLast;
            reqInput.requestid = 1;
            reqInput.size      = nSize;
            if (szCode != null && szCode.Length > 0)
            {
                reqInput.ptr = GetStringBytes(szCode, nSize);
            }
            DMRetOutput reqOutput = GetDMRet(reqInput);

            return(reqOutput);
        }
Beispiel #12
0
        /// <summary>
        /// 获取板块明细
        /// </summary>
        /// <returns></returns>
        public Dictionary <String, List <DMBlockDetailItem> > GetBlockDetailItems()
        {
            Dictionary <String, List <DMBlockDetailItem> > list = new Dictionary <String, List <DMBlockDetailItem> >();
            String code = "";
            long   time = 0;

            while (true)
            {
                DMRetOutput       dm1      = UpdateBlockDetail(time, code, 0, 1, true);
                DMBlockDetailItem lastItem = null;
                using (MemoryStream ms = new MemoryStream(dm1.ptr))
                {
                    using (BinaryReader br = new BinaryReader(ms))
                    {
                        int size = dm1.size;
                        br.ReadBytes(50);
                        for (int i = 0; i < size; i++)
                        {
                            DMBlockDetailItem item = new DMBlockDetailItem();
                            item.bkcode    = GetBytesString(br, 50);
                            item.code      = GetBytesString(br, 22);
                            item.innercode = br.ReadInt32();
                            item.timestamp = br.ReadInt64();
                            if (!list.ContainsKey(item.bkcode))
                            {
                                list[item.bkcode] = new List <DMBlockDetailItem>();
                            }
                            list[item.bkcode].Add(item);
                            lastItem = item;
                        }
                    }
                }
                if (!dm1.last)
                {
                    if (lastItem != null)
                    {
                        code = lastItem.code.Replace("\0", "");
                        time = lastItem.timestamp;
                    }
                }
                if (dm1.last)
                {
                    dm1.ptr = null;
                    break;
                }
                else
                {
                    dm1.ptr = null;
                }
            }
            code = "";
            time = 0;
            #region Delete NON_IMPORTANT
            //while (true)
            //{
            //    DMRetOutput dm1 = UpdateBlockDetail(time, code, 0, 1, false);
            //    DMBlockDetailItem lastItem = null;
            //    using (MemoryStream ms = new MemoryStream(dm1.ptr))
            //    {
            //        using (BinaryReader br = new BinaryReader(ms))
            //        {
            //            int size = dm1.size;
            //            br.ReadBytes(50);
            //            for (int i = 0; i < size; i++)
            //            {
            //                DMBlockDetailItem item = new DMBlockDetailItem();
            //                item.bkcode = GetBytesString(br, 50);
            //                item.code = GetBytesString(br, 22);
            //                item.innercode = br.ReadInt32();
            //                item.timestamp = br.ReadInt64();
            //                if (!list.ContainsKey(item.bkcode))
            //                {
            //                    list[item.bkcode] = new List<DMBlockDetailItem>();
            //                }
            //                list[item.bkcode].Add(item);
            //                lastItem = item;
            //            }
            //        }
            //    }
            //    if (!dm1.last)
            //    {
            //        if (lastItem != null)
            //        {
            //            code = lastItem.code.Replace("\0", "");
            //            time = lastItem.timestamp;
            //        }
            //    }
            //    if (dm1.last)
            //    {
            //        dm1.ptr = null;
            //        break;
            //    }
            //    else
            //    {
            //        dm1.ptr = null;
            //    }
            //}
            #endregion
            return(list);
        }
Beispiel #13
0
        /// <summary>
        /// 获取码表
        /// </summary>
        /// <returns>码表</returns>
        public List <KwItem> GetKwItems()
        {
            String        code  = "";
            long          time  = 0;
            List <KwItem> items = new List <KwItem>();
            Dictionary <String, List <KwItem> > items2 = new Dictionary <String, List <KwItem> >();

            while (true)
            {
                DMRetOutput dm1      = UpdateKeySpriteData(time, code, 0, true);
                KwItem      lastItem = null;
                using (MemoryStream ms = new MemoryStream(dm1.ptr))
                {
                    using (BinaryReader br = new BinaryReader(ms))
                    {
                        int size = dm1.size;
                        for (int i = 0; i < size; i++)
                        {
                            KwItem item = new KwItem();
                            item.Code       = GetBytesString(br, 20);
                            item.Name       = GetBytesString(br, 100);
                            item.Pingyin    = GetBytesString(br, 100);
                            item.Marketcode = GetBytesString(br, 40);
                            item.State      = br.ReadInt32();
                            item.Innercode  = br.ReadInt32();
                            item.Type       = br.ReadInt32();
                            item.Timestamp  = br.ReadInt64();
                            items.Add(item);
                            if (!items2.ContainsKey(item.Type.ToString()))
                            {
                                items2[item.Type.ToString()] = new List <KwItem>();
                            }
                            items2[item.Type.ToString()].Add(item);
                            lastItem = item;
                        }
                    }
                }
                if (!dm1.last)
                {
                    if (lastItem != null)
                    {
                        code = lastItem.Code;
                        time = lastItem.Timestamp;
                    }
                }
                if (dm1.last)
                {
                    break;
                }
            }
            //code = "";
            //time = 0;
            //while (true)
            //{
            //    DMRetOutput dm1 = UpdateKeySpriteData(time, code, 0, false);
            //    KwItem lastItem = null;
            //    using (MemoryStream ms = new MemoryStream(dm1.ptr))
            //    {
            //        using (BinaryReader br = new BinaryReader(ms))
            //        {
            //            int size = dm1.size;
            //            for (int i = 0; i < size; i++)
            //            {
            //                KwItem item = new KwItem();
            //                item.Code = GetBytesString(br, 20);
            //                item.Name = GetBytesString(br, 100);
            //                item.Pingyin = GetBytesString(br, 100);
            //                item.Marketcode = GetBytesString(br, 40);
            //                item.State = br.ReadInt32();
            //                item.Innercode = br.ReadInt32();
            //                item.Type = br.ReadInt32();
            //                item.Timestamp = br.ReadInt64();
            //                items.Add(item);
            //                if (!items2.ContainsKey(item.Type.ToString()))
            //                {
            //                    items2[item.Type.ToString()] = new List<KwItem>();
            //                }
            //                items2[item.Type.ToString()].Add(item);
            //                lastItem = item;
            //            }
            //        }
            //    }
            //    if (!dm1.last)
            //    {
            //        if (lastItem != null)
            //        {
            //            code = lastItem.Code;
            //            time = lastItem.Timestamp;
            //        }
            //    }
            //    if (dm1.last)
            //    {
            //        break;
            //    }
            //}
            DataTable dt = AnalysisDMRetOutput(UpdateTypeFile(0));

            foreach (DataRow row in dt.Rows)
            {
                String typename   = row[0].ToString();
                String marketCode = row[1].ToString();
                String marketName = "";
                if (items2.ContainsKey(marketCode))
                {
                    List <KwItem> items3 = items2[marketCode];
                    if (marketCode == "1")
                    {
                        marketName = "上证A股";
                    }
                    else if (marketCode == "2")
                    {
                        marketName = "上证B股";
                    }
                    else if (marketCode == "3")
                    {
                        marketName = "深证A股";
                    }
                    else if (marketCode == "4")
                    {
                        marketName = "深证B股";
                    }
                    else if (marketCode == "13")
                    {
                        marketName = "上证基金";
                    }
                    else if (marketCode == "14")
                    {
                        marketName = "深证基金";
                    }
                    else if (marketCode == "15")
                    {
                        marketName = "货币市场型基金";
                    }
                    else if (marketCode == "16")
                    {
                        marketName = "混合型基金";
                    }
                    else if (marketCode == "22")
                    {
                        marketName = "券商资管";
                    }
                    else if (marketCode == "23")
                    {
                        marketName = "信托";
                    }
                    else if (marketCode == "24")
                    {
                        marketName = "银行理财";
                    }
                    else if (marketCode == "25")
                    {
                        marketName = "信托";
                    }
                    else if (marketCode == "26")
                    {
                        marketName = "阳光私募";
                    }
                    else if (marketCode == "33")
                    {
                        marketName = "货币型基金";
                    }
                    else if (marketCode == "18")
                    {
                        marketName = ""; //R09M.IB
                    }
                    else if (marketCode == "19")
                    {
                        marketName = ""; //131800.SH
                    }
                    else if (marketCode == "20")
                    {
                        marketName = "利率"; //B1W.IR
                    }
                    else if (marketCode == "21")
                    {
                        marketName = ""; //DIBO1.IR
                    }
                    else if (marketCode == "27")
                    {
                        marketName = "货币期货";
                    }
                    else if (marketCode == "34")
                    {
                        marketName = "";  //隔夜14日
                    }
                    else if (marketCode == "101")
                    {
                        marketName = "美股";
                    }
                    else if (marketCode == "11")
                    {
                        marketName = "商品期货";  //线材
                    }
                    else if (marketCode == "12")
                    {
                        marketName = "股指期货";
                    }
                    else if (marketCode == "50")
                    {
                        marketName = "贵金属";  //沪金
                    }
                    else if (marketCode == "51")
                    {
                        marketName = "国债期货";
                    }
                    else if (marketCode == "52")
                    {
                        marketName = "上海期货交易所";  //沪铜
                    }
                    else if (marketCode == "68")
                    {
                        marketName = "上海期货交易所";  //橡胶
                    }
                    else if (marketCode == "80")
                    {
                        marketName = "郑州商品交易所";  //郑棉
                    }
                    else if (marketCode == "81")
                    {
                        marketName = "大连商品交易所";  //郑棉
                    }
                    else if (marketCode == "83")
                    {
                        marketName = "东证大商所";  //DZDCE001.DCE
                    }
                    else if (marketCode == "55")
                    {
                        marketName = "交易型开放式基金";  //50ETF
                    }
                    else if (marketCode == "56")
                    {
                        marketName = "上证期权";  //10000010.SH
                    }
                    else if (marketCode == "59")
                    {
                        marketName = "港股";
                    }
                    else if (marketCode == "60")
                    {
                        marketName = "港股期权";  //12108.HK
                    }
                    else if (marketCode == "61")
                    {
                        marketName = "";  //69229.HK
                    }
                    else if (marketCode == "62")
                    {
                        marketName = "";  //66186.HK
                    }
                    else if (marketCode == "63")
                    {
                        marketName = "";  //M1801C2850.DCE
                    }
                    else if (marketCode == "64")
                    {
                        marketName = "";  //M1712P3100.DCE
                    }
                    else if (marketCode == "82")
                    {
                        marketName = "";  //890019.GZEE
                    }
                    else if (marketCode == "5")
                    {
                        marketName = "";  //832158.OC
                    }
                    else if (marketCode == "6")
                    {
                        marketName = "";  //400040.OC
                    }
                    else if (marketCode == "121")
                    {
                        marketName = "";  //GBPCNY3WF.IB
                    }
                    else if (marketCode == "122")
                    {
                        marketName = "";  //GBPUSD.IB
                    }
                    else if (marketCode == "124")
                    {
                        marketName = "";  //USDDKK.FX
                    }
                    else if (marketCode == "111")
                    {
                        marketName = "";  //QI14N.CMX
                    }
                    else if (marketCode == "112")
                    {
                        marketName = "";  //UL14H.CBT
                    }
                    else if (marketCode == "113")
                    {
                        marketName = "";  //RT13V.SG
                    }
                    else if (marketCode == "114")
                    {
                        marketName = "";  //LZNT.LME
                    }
                    else if (marketCode == "115")
                    {
                        marketName = "";  //CPRC.LME
                    }
                    else if (marketCode == "53")
                    {
                        marketName = "";  //BNI.BCE
                    }
                    else if (marketCode == "54")
                    {
                        marketName = "";  //CO.FME
                    }
                    else if (marketCode == "71")
                    {
                        marketName = "";  //01566.HK
                    }
                    else if (marketCode == "72")
                    {
                        marketName = "";  //08306.HK
                    }
                    else if (marketCode == "73")
                    {
                        marketName = "";  //02301.HK
                    }
                    else if (marketCode == "74")
                    {
                        marketName = "";  //05879.HK
                    }
                    else if (marketCode == "79")
                    {
                        marketName = "";  //00806.HK
                    }
                    else if (marketCode == "10")
                    {
                        marketName = "";  //110020.SH
                    }
                    else if (marketCode == "8")
                    {
                        marketName = "";  //031232001.IB
                    }
                    else if (marketCode == "9")
                    {
                        marketName = "";  //122721.SH
                    }
                    else if (marketCode == "147")
                    {
                        marketName = "";  //SCSHK.HI
                    }
                    else if (marketCode == "17")
                    {
                        marketName = "";  //861030.EI
                    }
                    else if (marketCode == "28")
                    {
                        marketName = "";  //CN6005.SZ
                    }
                    else if (marketCode == "29")
                    {
                        marketName = "";  //CBD00133.CS
                    }
                    else if (marketCode == "30")
                    {
                        marketName = "";  //H20615.CSI
                    }
                    else if (marketCode == "31")
                    {
                        marketName = "";  //H30373.CSI
                    }
                    else if (marketCode == "35")
                    {
                        marketName = "";  //HSI.HI
                    }
                    else if (marketCode == "36")
                    {
                        marketName = "";  //JKSE.GI
                    }
                    else if (marketCode == "37")
                    {
                        marketName = "";  //KLSE.GI
                    }
                    else if (marketCode == "38")
                    {
                        marketName = "";  //KS11.GI
                    }
                    else if (marketCode == "39")
                    {
                        marketName = "";  //N225.GI
                    }
                    else if (marketCode == "40")
                    {
                        marketName = "";  //PSI.GI
                    }
                    else if (marketCode == "41")
                    {
                        marketName = "";  //SENSEX.GI
                    }
                    else if (marketCode == "42")
                    {
                        marketName = "";  //STI.GI
                    }
                    else if (marketCode == "43")
                    {
                        marketName = "";  //TWII.TW
                    }
                    else if (marketCode == "44")
                    {
                        marketName = "";  //NZ50.GI
                    }
                    else if (marketCode == "45")
                    {
                        marketName = "";  //MXX.GI
                    }
                    else if (marketCode == "46")
                    {
                        marketName = "";  //AEX.GI
                    }
                    else if (marketCode == "47")
                    {
                        marketName = "";  //ATX.GI
                    }
                    else if (marketCode == "48")
                    {
                        marketName = "";  //OSEAX.GI
                    }
                    else if (marketCode == "49")
                    {
                        marketName = "";  //RTS.GI
                    }
                    else if (marketCode == "65")
                    {
                        marketName = "";  //HSCAHSIDV.HI
                    }
                    else if (marketCode == "66")
                    {
                        marketName = "";  //CSCSHQ.GI
                    }
                    else if (marketCode == "67")
                    {
                        marketName = "";  //AS51.GI
                    }
                    else if (marketCode == "69")
                    {
                        marketName = "";  //CES280.CES
                    }
                    else if (marketCode == "78")
                    {
                        marketName = "";  //CRB.GI
                    }
                    else if (marketCode == "78")
                    {
                        marketName = "";  //CRB.GI
                    }
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine("大类名称:" + typename);
                    sb.AppendLine("类型代码:" + marketCode);
                    sb.AppendLine("类型名称:" + marketName);
                    for (int i = 0; i < items3.Count; i++)
                    {
                        sb.AppendLine(items3[i].ToString());
                    }
                    //CFileA.Write(Application.StartupPath+"\\details\\"+ marketCode + ".txt", sb.ToString());
                }
                else
                {
                    int a = 0;
                }
                Console.WriteLine("1");
            }
            Console.WriteLine("1");
            return(items);
        }
Beispiel #14
0
        /*获取数据*/
        /// <summary>
        /// 分析返回数据
        /// </summary>
        /// <param name="retOutput">返回数据</param>
        public DataTable AnalysisDMRetOutput(DMRetOutput retOutput)
        {
            DataTable result = new DataTable();

            if (retOutput.itemid == SDATA_TYPE_KEYSPRITE_IMPORTANT ||
                retOutput.itemid == SDATA_TYPE_KEYSPRITE_NOTIMPORTANT)
            {
                // Generate return table.
                result.Columns.Add("code");
                result.Columns.Add("name");
                result.Columns.Add("pingyin");
                result.Columns.Add("marketcode");
                result.Columns.Add("state");
                result.Columns.Add("innercode");
                result.Columns.Add("type");
                result.Columns.Add("timestamp");
                if (retOutput.ptr != null)
                {
                    List <DMSecuItem> items = new List <DMSecuItem>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;

                            for (int i = 0; i < size; i++)
                            {
                                DMSecuItem item = new DMSecuItem();
                                item.code       = GetBytesString(br, 20);
                                item.name       = GetBytesString(br, 100);
                                item.pingyin    = GetBytesString(br, 100);
                                item.marketcode = GetBytesString(br, 40);
                                item.state      = br.ReadInt32();
                                item.innercode  = br.ReadInt32();
                                item.type       = br.ReadInt32();
                                item.timestamp  = br.ReadInt64();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].code;
                                r[1] = items[i].name;
                                r[2] = items[i].pingyin;
                                r[3] = items[i].marketcode;
                                r[4] = items[i].state;
                                r[5] = items[i].innercode;
                                r[6] = items[i].type;
                                r[7] = items[i].timestamp;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_KEYSPRITE_DELETE_IMPT ||
                     retOutput.itemid == SDATA_TYPE_KEYSPRITE_DELETE_NOTIMPT)
            {
                // Generate return table.
                result.Columns.Add("code");
                result.Columns.Add("timestamp");
                if (retOutput.ptr != null)
                {
                    List <DMSecuItemDelete> items = new List <DMSecuItemDelete>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                DMSecuItemDelete item = new DMSecuItemDelete();
                                item.code      = GetBytesString(br, 20);
                                item.timestamp = br.ReadInt64();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].code;
                                r[1] = items[i].timestamp;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_BLOCKDATATREE)
            {
                // Generate return table.
                result.Columns.Add("code");
                result.Columns.Add("name");
                result.Columns.Add("parentcode");
                result.Columns.Add("typcode");
                result.Columns.Add("typname");
                result.Columns.Add("tmpl");
                result.Columns.Add("order");
                result.Columns.Add("timestamp");
                if (retOutput.ptr != null)
                {
                    List <DMBlockItem> items = new List <DMBlockItem>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                DMBlockItem item = new DMBlockItem();
                                item.innerCode  = GetBytesString(br, 16);
                                item.code       = GetBytesString(br, 50);
                                item.name       = GetBytesString(br, 200);
                                item.parentcode = GetBytesString(br, 50);
                                item.typcode    = GetBytesString(br, 10);
                                item.typname    = GetBytesString(br, 200);
                                item.tmpl       = GetBytesString(br, 10);
                                item.order      = br.ReadInt32();
                                item.timestamp  = br.ReadInt64();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].code;
                                r[1] = items[i].name;
                                r[2] = items[i].parentcode;
                                r[3] = items[i].typcode;
                                r[4] = items[i].typname;
                                r[5] = items[i].tmpl;
                                r[6] = items[i].order;
                                r[7] = items[i].timestamp;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_BLOCKDETAIL_IMPT ||
                     retOutput.itemid == SDATA_TYPE_BLOCKDETAIL_NOTIMPT)
            {
                if (retOutput.requestid == 0 || retOutput.requestid == 1)
                {
                    // Generate return table.
                    result.Columns.Add("bkcode");
                    result.Columns.Add("code");
                    result.Columns.Add("innercode");
                    result.Columns.Add("timestamp");
                    if (retOutput.ptr != null)
                    {
                        List <DMBlockDetailItem> items = new List <DMBlockDetailItem>();
                        using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                        {
                            using (BinaryReader br = new BinaryReader(ms))
                            {
                                br.ReadBytes(50);
                                int size = retOutput.size;
                                for (int i = 0; i < size; i++)
                                {
                                    DMBlockDetailItem item = new DMBlockDetailItem();
                                    item.bkcode    = GetBytesString(br, 50);
                                    item.code      = GetBytesString(br, 22);
                                    item.innercode = br.ReadInt32();
                                    item.timestamp = br.ReadInt64();
                                    items.Add(item);
                                }
                                for (int i = 0; i < size; i++)
                                {
                                    DataRow r = result.NewRow();
                                    r[0] = items[i].bkcode;
                                    r[1] = items[i].code;
                                    r[2] = items[i].innercode;
                                    r[3] = items[i].timestamp;
                                    result.Rows.Add(r);
                                }
                            }
                        }
                    }
                }
                else if (retOutput.requestid == 2)
                {
                    // Generate return table.
                    result.Columns.Add("code");
                    if (retOutput.ptr != null)
                    {
                        List <DMBlockData> items = new List <DMBlockData>();
                        using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                        {
                            using (BinaryReader br = new BinaryReader(ms))
                            {
                                int size = retOutput.size;
                                for (int i = 0; i < size; i++)
                                {
                                    DMBlockData item = new DMBlockData();
                                    item.code = GetBytesString(br, 20);
                                    items.Add(item);
                                }
                                for (int i = 0; i < size; i++)
                                {
                                    DataRow r = result.NewRow();
                                    r[0] = items[i].code;

                                    result.Rows.Add(r);
                                }
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_BKZSDYGX)
            {
                // Generate return table.
                result.Columns.Add("cPUBLISHCODE");
                result.Columns.Add("cSTR_EMCODE");
                result.Columns.Add("cSTR_LX");
                result.Columns.Add("innercode");
                if (retOutput.ptr != null)
                {
                    //SDM_IND_BKZSDYGX_TEST
                    List <SDM_IND_BKZSDYGX_TEST> items = new List <SDM_IND_BKZSDYGX_TEST>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                SDM_IND_BKZSDYGX_TEST item = new SDM_IND_BKZSDYGX_TEST();
                                item.cPUBLISHCODE = GetBytesString(br, 50);
                                item.cSTR_EMCODE  = GetBytesString(br, 60);
                                item.cSTR_LX      = GetBytesString(br, 22);
                                item.innerCode    = br.ReadInt32();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].cPUBLISHCODE;
                                r[1] = items[i].cSTR_EMCODE;
                                r[2] = items[i].cSTR_LX;
                                r[3] = items[i].innerCode;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_MAININDEX)
            {
                // Generate return table.
                result.Columns.Add("nINT_PAIXU");
                result.Columns.Add("cSTR_EMCODE");
                if (retOutput.ptr != null)
                {
                    List <sIND_MAININDEX> items = new List <sIND_MAININDEX>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                sIND_MAININDEX item = new sIND_MAININDEX();
                                item.nINT_PAIXU  = br.ReadInt32();
                                item.cSTR_EMCODE = GetBytesString(br, 60);
                                items.Add(item);
                            }

                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].nINT_PAIXU;
                                r[1] = items[i].cSTR_EMCODE;

                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_AREAINDGNLISH)
            {
                // Generate return table.
                result.Columns.Add("cSECURITYVARIETYCODE");
                result.Columns.Add("cSECURITYVARIETYCODEDC");
                result.Columns.Add("cSECURITYVARIETYCODEDY");
                if (retOutput.ptr != null)
                {
                    List <sDM_SPE_AREAINDGNLISH> items = new List <sDM_SPE_AREAINDGNLISH>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                sDM_SPE_AREAINDGNLISH item = new sDM_SPE_AREAINDGNLISH();
                                item.cSECURITYVARIETYCODE   = GetBytesString(br, 50);
                                item.cSECURITYVARIETYCODEDC = GetBytesString(br, 50);
                                item.cSECURITYVARIETYCODEDY = GetBytesString(br, 50);
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].cSECURITYVARIETYCODE;
                                r[1] = items[i].cSECURITYVARIETYCODEDC;
                                r[2] = items[i].cSECURITYVARIETYCODEDY;

                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_AREAINDGNLISH_GN)
            {
                // Generate return table.
                result.Columns.Add("cSECURITYVARIETYCODE");
                result.Columns.Add("cSECURITYVARIETYCODEGN");
                if (retOutput.ptr != null)
                {
                    List <sDM_SPE_AREAINDGNLISH_GN> items = new List <sDM_SPE_AREAINDGNLISH_GN>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                sDM_SPE_AREAINDGNLISH_GN item = new sDM_SPE_AREAINDGNLISH_GN();
                                item.cSECURITYVARIETYCODE   = GetBytesString(br, 50);
                                item.cSECURITYVARIETYCODEGN = GetBytesString(br, 50);
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].cSECURITYVARIETYCODE;
                                r[1] = items[i].cSECURITYVARIETYCODEGN;

                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_URL)
            {
                // Generate return table.
                result.Columns.Add("code");
                result.Columns.Add("url");
                result.Columns.Add("timestamp");
                if (retOutput.ptr != null)
                {
                    List <EMUrlItem> items = new List <EMUrlItem>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                EMUrlItem item = new EMUrlItem();
                                item.code      = GetBytesString(br, 20);
                                item.url       = GetBytesString(br, 200);
                                item.timestamp = br.ReadInt64();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].code;
                                r[1] = items[i].url;
                                r[2] = items[i].timestamp;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_URL_DELETE)
            {
                // Generate return table.
                result.Columns.Add("code");

                result.Columns.Add("timestamp");
                if (retOutput.ptr != null)
                {
                    List <UrlItemDel> items = new List <UrlItemDel>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                UrlItemDel item = new UrlItemDel();
                                item.code      = GetBytesString(br, 10);
                                item.timestamp = br.ReadInt64();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].code;
                                r[1] = items[i].timestamp;
                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_TYPE)
            {
                // Generate return table.
                result.Columns.Add("type");
                result.Columns.Add("typeCode");
                result.Columns.Add("typeCount");
                if (retOutput.ptr != null)
                {
                    List <sDMTyItem> items = new List <sDMTyItem>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                sDMTyItem item = new sDMTyItem();
                                item.type      = GetBytesString(br, 40);
                                item.typeCode  = GetBytesString(br, 40);
                                item.typeCount = br.ReadInt32();
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].type;
                                r[1] = items[i].typeCode;
                                r[2] = items[i].typeCount;

                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_FUNDCOMPCODE)
            {
                // Generate return table.
                result.Columns.Add("pulishcode");
                result.Columns.Add("compcode");
                if (retOutput.ptr != null)
                {
                    List <sDMFundCompcode> items = new List <sDMFundCompcode>();
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            int size = retOutput.size;
                            for (int i = 0; i < size; i++)
                            {
                                sDMFundCompcode item = new sDMFundCompcode();
                                item.pulishcode = GetBytesString(br, 50);
                                item.compcode   = GetBytesString(br, 10);
                                items.Add(item);
                            }
                            for (int i = 0; i < size; i++)
                            {
                                DataRow r = result.NewRow();
                                r[0] = items[i].pulishcode;
                                r[1] = items[i].compcode;

                                result.Rows.Add(r);
                            }
                        }
                    }
                }
            }
            else if (retOutput.itemid == SDATA_TYPE_STATE)
            {
                result.Columns.Add("nversion");
                result.Columns.Add("cversion");
                result.Columns.Add("nper");
                if (retOutput.ptr != null)
                {
                    using (MemoryStream ms = new MemoryStream(retOutput.ptr))
                    {
                        using (BinaryReader br = new BinaryReader(ms))
                        {
                            DataRow r = result.NewRow();
                            r[0] = br.ReadInt32();
                            r[1] = br.ReadInt32();
                            r[2] = br.ReadInt32();
                            result.Rows.Add(r);
                        }
                    }
                }
            }
            return(result);
        }