Пример #1
0
        /// <summary>
        /// 获取历史数据
        /// </summary>
        /// <param name="dataInfo"></param>
        /// <param name="datas"></param>
        /// <param name="body"></param>
        /// <param name="bodyLength"></param>
        /// <returns></returns>
        public static int GetHistoryDatas(ref HistoryDataInfo dataInfo, List <SecurityData> datas, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            dataInfo.m_securityCode = binary.ReadString();
            dataInfo.m_type         = binary.ReadChar();
            dataInfo.m_size         = binary.ReadInt();
            dataInfo.m_cycle        = binary.ReadInt();
            dataInfo.m_subscription = binary.ReadInt();
            dataInfo.m_startDate    = binary.ReadDouble();
            dataInfo.m_endDate      = binary.ReadDouble();
            dataInfo.m_pushData     = binary.ReadBool();
            int size = dataInfo.m_size;

            for (int i = 0; i < size; i++)
            {
                SecurityData item = new SecurityData();
                item.m_date   = binary.ReadDouble();
                item.m_close  = binary.ReadFloat();
                item.m_high   = binary.ReadFloat();
                item.m_low    = binary.ReadFloat();
                item.m_open   = binary.ReadFloat();
                item.m_volume = binary.ReadDouble();
                item.m_amount = binary.ReadDouble();
                if (dataInfo.m_cycle == 0)
                {
                    item.m_avgPrice = binary.ReadFloat();
                }
                datas.Add(item);
            }
            binary.Close();
            return(1);
        }
Пример #2
0
 /// <summary>
 /// 回调函数
 /// </summary>
 /// <param name="socketID">连接ID</param>
 /// <param name="localSID">本地连接ID</param>
 /// <param name="str">数据</param>
 /// <param name="len">长度</param>
 public static void CallBack(int socketID, int localSID, IntPtr str, int len)
 {
     m_downFlow += len;
     try
     {
         if (len > 4)
         {
             byte[] bytes = GetValueChar(str, len);
             Binary br    = new Binary();
             br.Write(bytes, len);
             int         head      = br.ReadInt();
             int         groupID   = br.ReadShort();
             int         serviceID = br.ReadShort();
             BaseService service   = null;
             if (m_services.ContainsKey(serviceID))
             {
                 m_services[serviceID].OnCallBack(br, socketID, localSID, len);
             }
             br.Close();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
     }
 }
Пример #3
0
        public static int GetFilterResults(Dictionary <string, double[]> datas, ref int currentBatch, ref int totalBatch, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            currentBatch = binary.ReadInt();
            totalBatch   = binary.ReadInt();
            if (num > 0)
            {
                for (int i = 0; i < num; i++)
                {
                    string   str      = binary.ReadString();
                    int      num3     = binary.ReadInt();
                    double[] numArray = new double[num3];
                    for (int j = 0; j < num3; j++)
                    {
                        numArray[j] = binary.ReadDouble();
                    }
                    datas[str] = numArray;
                }
            }
            binary.Close();
            return(1);
        }
Пример #4
0
        /// <summary>
        /// 通过流获取登录信息
        /// </summary>
        /// <param name="loginInfos">登录信息</param>
        /// <param name="body">包体</param>
        /// <param name="bodyLength">包体长度</param>
        public static int GetLoginInfos(List <LoginInfo> loginInfos, byte[] body, int bodyLength)
        {
            Binary br = new Binary();

            br.Write(body, bodyLength);
            int size = br.ReadInt();

            if (size > 0)
            {
                for (int i = 0; i < size; i++)
                {
                    LoginInfo loginInfo = new LoginInfo();
                    loginInfo.m_userID    = br.ReadInt();
                    loginInfo.m_userName  = br.ReadString();
                    loginInfo.m_passWord  = br.ReadString();
                    loginInfo.m_nickName  = br.ReadString();
                    loginInfo.m_type      = br.ReadInt();
                    loginInfo.m_state     = br.ReadInt();
                    loginInfo.m_sessionID = br.ReadInt();
                    loginInfos.Add(loginInfo);
                }
            }
            br.Close();
            return(1);
        }
Пример #5
0
        public static int GetMacros(List <Macro> macros, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            if (num > 0)
            {
                for (int i = 0; i < num; i++)
                {
                    Macro item = new Macro();
                    item.m_macroID     = binary.ReadString();
                    item.m_userID      = binary.ReadInt();
                    item.m_name        = binary.ReadString();
                    item.m_description = binary.ReadString();
                    item.m_icon        = binary.ReadString();
                    item.m_script      = binary.ReadString();
                    item.m_type        = binary.ReadInt();
                    item.m_interval    = binary.ReadInt();
                    item.m_cd          = binary.ReadInt();
                    item.m_orderNum    = binary.ReadInt();
                    macros.Add(item);
                }
            }
            binary.Close();
            return(1);
        }
Пример #6
0
        public static int GetTemplates(List <SecurityFilterTemplate> templates, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            if (num > 0)
            {
                for (int i = 0; i < num; i++)
                {
                    SecurityFilterTemplate item = new SecurityFilterTemplate();
                    item.m_templateID   = binary.ReadString();
                    item.m_userID       = binary.ReadInt();
                    item.m_name         = binary.ReadString();
                    item.m_codes        = binary.ReadString();
                    item.m_indicator    = binary.ReadString();
                    item.m_parameters   = binary.ReadString();
                    item.m_filter       = binary.ReadString();
                    item.m_cycle        = binary.ReadInt();
                    item.m_subscription = binary.ReadInt();
                    item.m_orderNum     = binary.ReadInt();
                    templates.Add(item);
                }
            }
            binary.Close();
            return(1);
        }
Пример #7
0
        public static int GetSecurities(List <Security> securities, int functionID, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            if (num > 0)
            {
                for (int i = 0; i < num; i++)
                {
                    Security item = new Security();
                    item.m_code = binary.ReadString();

                    if (functionID == 0)
                    {
                        item.m_name    = binary.ReadString();
                        item.m_pingyin = binary.ReadString();
                        item.m_type    = binary.ReadShort();
                        item.m_status  = binary.ReadChar();
                    }
                    securities.Add(item);
                }
            }
            binary.Close();
            return(1);
        }
Пример #8
0
        public int Send(int functionID, int requestID, List <Macro> macros)
        {
            Binary binary = new Binary();
            int    count  = macros.Count;

            binary.WriteInt(count);
            for (int i = 0; i < count; i++)
            {
                Macro macro = macros[i];
                binary.WriteString(macro.m_macroID);
                binary.WriteInt(macro.m_userID);
                binary.WriteString(macro.m_name);
                binary.WriteString(macro.m_description);
                binary.WriteString(macro.m_icon);
                binary.WriteString(macro.m_script);
                binary.WriteInt(macro.m_type);
                binary.WriteInt(macro.m_interval);
                binary.WriteInt(macro.m_cd);
                binary.WriteInt(macro.m_orderNum);
            }
            byte[] bytes = binary.GetBytes();
            int    num3  = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num3);
        }
Пример #9
0
        public static int GetIndicators(List <Indicator> indicators, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            if (num > 0)
            {
                for (int i = 0; i < num; i++)
                {
                    Indicator item = new Indicator();
                    item.m_indicatorID       = binary.ReadString();
                    item.m_userID            = binary.ReadInt();
                    item.m_category          = binary.ReadString();
                    item.m_coordinate        = binary.ReadString();
                    item.m_description       = binary.ReadString();
                    item.m_digit             = binary.ReadInt();
                    item.m_name              = binary.ReadString();
                    item.m_orderNum          = binary.ReadInt();
                    item.m_paintType         = binary.ReadInt();
                    item.m_parameters        = binary.ReadString();
                    item.m_password          = binary.ReadString();
                    item.m_specialCoordinate = binary.ReadString();
                    item.m_text              = binary.ReadString();
                    item.m_type              = binary.ReadInt();
                    item.m_usePassword       = binary.ReadInt();
                    item.m_version           = binary.ReadInt();
                    indicators.Add(item);
                }
            }
            binary.Close();
            return(1);
        }
Пример #10
0
        public int Send(int functionID, int requestID, List <Indicator> indicators)
        {
            Binary binary = new Binary();
            int    count  = indicators.Count;

            binary.WriteInt(count);
            for (int i = 0; i < count; i++)
            {
                Indicator indicator = indicators[i];
                binary.WriteString(indicator.m_indicatorID);
                binary.WriteInt(indicator.m_userID);
                binary.WriteString(indicator.m_category);
                binary.WriteString(indicator.m_coordinate);
                binary.WriteString(indicator.m_description);
                binary.WriteInt(indicator.m_digit);
                binary.WriteString(indicator.m_name);
                binary.WriteInt(indicator.m_orderNum);
                binary.WriteInt(indicator.m_paintType);
                binary.WriteString(indicator.m_parameters);
                binary.WriteString(indicator.m_password);
                binary.WriteString(indicator.m_specialCoordinate);
                binary.WriteString(indicator.m_text);
                binary.WriteInt(indicator.m_type);
                binary.WriteInt(indicator.m_usePassword);
                binary.WriteInt(indicator.m_version);
            }
            byte[] bytes = binary.GetBytes();
            int    num3  = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num3);
        }
Пример #11
0
        public int Send(int functionID, int requestID, List <SecurityFilterTemplate> templates)
        {
            Binary binary = new Binary();
            int    count  = templates.Count;

            binary.WriteInt(count);
            for (int i = 0; i < count; i++)
            {
                SecurityFilterTemplate template = templates[i];
                binary.WriteString(template.m_templateID);
                binary.WriteInt(template.m_userID);
                binary.WriteString(template.m_name);
                binary.WriteString(template.m_codes);
                binary.WriteString(template.m_indicator);
                binary.WriteString(template.m_parameters);
                binary.WriteString(template.m_filter);
                binary.WriteInt(template.m_cycle);
                binary.WriteInt(template.m_subscription);
                binary.WriteInt(template.m_orderNum);
            }
            byte[] bytes = binary.GetBytes();
            int    num3  = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num3);
        }
Пример #12
0
        /// <summary>
        /// 获取表格数据
        /// </summary>
        /// <param name="grid">表格</param>
        /// <returns>流</returns>
        public byte[] GetBytes(GridA grid)
        {
            Binary br = new Binary();

            br.WriteString(grid.Name);
            List <GridColumn> columns = grid.GetColumns();
            int columnsSize           = columns.Count;

            br.WriteInt(columnsSize);
            for (int i = 0; i < columnsSize; i++)
            {
                GridColumn column = columns[i];
                br.WriteString(column.Name);
                br.WriteString(column.ColumnType);
            }
            List <GridRow> rows      = grid.GetRows();
            int            rowsCount = rows.Count;

            br.WriteInt(rowsCount);
            for (int i = 0; i < rowsCount; i++)
            {
                GridRow row = rows[i];
                for (int j = 0; j < columnsSize; j++)
                {
                    GridColumn column     = columns[j];
                    String     columnType = column.ColumnType.ToLower();
                    GridCell   cell       = row.GetCell(j);
                    if (columnType == "bool")
                    {
                        br.WriteBool(cell.GetBool());
                    }
                    else if (columnType == "double")
                    {
                        br.WriteDouble(cell.GetDouble());
                    }
                    else if (columnType == "float")
                    {
                        br.WriteFloat(cell.GetFloat());
                    }
                    else if (columnType == "int")
                    {
                        br.WriteInt(cell.GetInt());
                    }
                    else if (columnType == "long")
                    {
                        br.WriteDouble(cell.GetLong());
                    }
                    else if (columnType == "string")
                    {
                        br.WriteString(cell.GetString());
                    }
                }
            }
            byte[] bytes = br.GetBytes();
            br.Close();
            return(bytes);
        }
Пример #13
0
        /// <summary>
        /// 获取预测的成交量
        /// </summary>
        /// <param name="requestID"></param>
        /// <param name="securityCode"></param>
        /// <returns></returns>
        public int GetVolumeForecast(int requestID, string securityCode)
        {
            Binary binary = new Binary();

            binary.WriteInt(1);
            binary.WriteString(securityCode);
            binary.WriteDouble(0.0);
            byte[] bytes = binary.GetBytes();
            binary.Close();
            return((this.Send(new CMessage(base.GroupID, base.ServiceID, FUNCTIONID_QUOTE_GETVOLUMEFORECAST, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes)) > 0) ? 1 : 0);
        }
Пример #14
0
        public int GetSecuritiesByBlockID(int requestID, string blockID)
        {
            Binary binary = new Binary();

            binary.WriteString(blockID);
            byte[] bytes = binary.GetBytes();
            int    num   = this.Send(new CMessage(base.GroupID, base.ServiceID, 1, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return((num > 0) ? 1 : 0);
        }
Пример #15
0
        /// <summary>
        /// 获取实时数据
        /// </summary>
        /// <param name="dataInfo"></param>
        /// <param name="datas"></param>
        /// <param name="body"></param>
        /// <param name="bodyLength"></param>
        /// <returns></returns>
        public static int GetLatestDatas(ref LatestDataInfo dataInfo, List <SecurityLatestData> datas, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            dataInfo.m_formatType = binary.ReadChar();
            dataInfo.m_lv2        = binary.ReadChar();
            dataInfo.m_size       = binary.ReadInt();
            for (int i = 0; i < dataInfo.m_size; i++)
            {
                SecurityLatestData item = new SecurityLatestData();
                item.m_securityCode = binary.ReadString();
                item.m_open         = binary.ReadFloat();
                item.m_lastClose    = binary.ReadFloat();
                item.m_close        = binary.ReadFloat();
                item.m_high         = binary.ReadFloat();
                item.m_low          = binary.ReadFloat();
                item.m_volume       = binary.ReadDouble();
                item.m_amount       = binary.ReadDouble();
                if (dataInfo.m_formatType == 0)
                {
                    item.m_buyVolume1   = binary.ReadInt();
                    item.m_buyPrice1    = binary.ReadFloat();
                    item.m_buyVolume2   = binary.ReadInt();
                    item.m_buyPrice2    = binary.ReadFloat();
                    item.m_buyVolume3   = binary.ReadInt();
                    item.m_buyPrice3    = binary.ReadFloat();
                    item.m_buyVolume4   = binary.ReadInt();
                    item.m_buyPrice4    = binary.ReadFloat();
                    item.m_buyVolume5   = binary.ReadInt();
                    item.m_buyPrice5    = binary.ReadFloat();
                    item.m_sellVolume1  = binary.ReadInt();
                    item.m_sellPrice1   = binary.ReadFloat();
                    item.m_sellVolume2  = binary.ReadInt();
                    item.m_sellPrice2   = binary.ReadFloat();
                    item.m_sellVolume3  = binary.ReadInt();
                    item.m_sellPrice3   = binary.ReadFloat();
                    item.m_sellVolume4  = binary.ReadInt();
                    item.m_sellPrice4   = binary.ReadFloat();
                    item.m_sellVolume5  = binary.ReadInt();
                    item.m_sellPrice5   = binary.ReadFloat();
                    item.m_innerVol     = binary.ReadInt();
                    item.m_outerVol     = binary.ReadInt();
                    item.m_turnoverRate = binary.ReadFloat();
                    item.m_openInterest = binary.ReadDouble();
                    item.m_settlePrice  = binary.ReadFloat();
                }
                item.m_date = binary.ReadDouble();
                datas.Add(item);
            }
            binary.Close();
            return(1);
        }
Пример #16
0
        public int SendVisitsCount(int functionID, int requestID, UserSecurityVisitsCount visitsCount)
        {
            Binary binary = new Binary();

            binary.WriteInt(visitsCount.m_userID);
            binary.WriteString(visitsCount.CodesToString());
            byte[] bytes = binary.GetBytes();
            int    num   = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num);
        }
Пример #17
0
        /// <summary>
        /// 发送请求
        /// </summary>
        /// <param name="functionID"></param>
        /// <param name="requestID"></param>
        /// <param name="socketID"></param>
        /// <param name="dataInfo"></param>
        /// <returns></returns>
        public int Send(int functionID, int requestID, int socketID, LatestDataInfo dataInfo)
        {
            Binary binary = new Binary();

            binary.WriteString(dataInfo.m_codes);
            binary.WriteChar((char)dataInfo.m_formatType);
            binary.WriteChar((char)dataInfo.m_lv2);
            binary.WriteInt(dataInfo.m_size);
            byte[] bytes = binary.GetBytes();
            int    num   = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num);
        }
Пример #18
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="message">消息</param>
        public virtual int Send(CMessage message)
        {
            Binary bw = new Binary();

            byte[] body          = message.m_body;
            int    bodyLength    = message.m_bodyLength;
            int    uncBodyLength = bodyLength;

            if (message.m_compressType == COMPRESSTYPE_GZIP)
            {
                using (MemoryStream cms = new MemoryStream())
                {
                    using (GZipStream gzip = new GZipStream(cms, CompressionMode.Compress))
                    {
                        gzip.Write(body, 0, body.Length);
                    }
                    body       = cms.ToArray();
                    bodyLength = body.Length;
                }
            }
            int len = sizeof(int) * 4 + bodyLength + sizeof(short) * 3 + sizeof(byte) * 2;

            bw.WriteInt(len);
            bw.WriteShort((short)message.m_groupID);
            bw.WriteShort((short)message.m_serviceID);
            bw.WriteShort((short)message.m_functionID);
            bw.WriteInt(message.m_sessionID);
            bw.WriteInt(message.m_requestID);
            bw.WriteByte((byte)message.m_state);
            bw.WriteByte((byte)message.m_compressType);
            bw.WriteInt(uncBodyLength);
            bw.WriteBytes(body);
            byte[] bytes  = bw.GetBytes();
            int    length = bytes.Length;
            IntPtr ptr    = Marshal.AllocHGlobal(sizeof(byte) * length);

            for (int i = 0; i < length; i++)
            {
                IntPtr iptr = (IntPtr)((int)ptr + i);
                Marshal.WriteByte(iptr, bytes[i]);
            }
            int ret = SendByClient(message.m_socketID, ptr, length);

            m_upFlow += ret;
            Marshal.FreeHGlobal(ptr);
            bw.Close();
            return(ret);
        }
Пример #19
0
        /// <summary>
        /// 获取预测的成交量
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="body"></param>
        /// <param name="bodyLength"></param>
        /// <returns></returns>
        public static int GetVolumeForecastData(List <VolumeForecastData> datas, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            int num = binary.ReadInt();

            for (int i = 0; i < num; i++)
            {
                VolumeForecastData item = new VolumeForecastData();
                item.m_securityCode = binary.ReadString();
                item.m_rate         = binary.ReadDouble();
                datas.Add(item);
            }
            binary.Close();
            return(1);
        }
Пример #20
0
        /// <summary>
        /// 发送请求
        /// </summary>
        /// <param name="functionID"></param>
        /// <param name="requestID"></param>
        /// <param name="socketID"></param>
        /// <param name="dataInfo"></param>
        /// <returns></returns>
        public int Send(int functionID, int requestID, int socketID, HistoryDataInfo dataInfo)
        {
            Binary binary = new Binary();

            binary.WriteString(dataInfo.m_securityCode);
            binary.WriteChar((char)dataInfo.m_type);
            binary.WriteInt(dataInfo.m_size);
            binary.WriteInt(dataInfo.m_cycle);
            binary.WriteInt(dataInfo.m_subscription);
            binary.WriteDouble(dataInfo.m_startDate);
            binary.WriteDouble(dataInfo.m_endDate);
            binary.WriteBool(dataInfo.m_pushData);
            byte[] bytes = binary.GetBytes();
            int    num   = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num);
        }
Пример #21
0
        /// <summary>
        /// 获取弹幕信息
        /// </summary>
        /// <param name="datas">用于返回弹幕信息</param>
        /// <param name="body">包体</param>
        /// <param name="bodyLength">包体长度</param>
        /// <returns></returns>
        public static int GetChatDatas(List <ChatData> datas, byte[] body, int bodyLength)
        {
            Binary br = new Binary();

            br.Write(body, bodyLength);
            int size = br.ReadInt();

            for (int i = 0; i < size; i++)
            {
                ChatData chat = new ChatData();
                chat.m_userID = br.ReadInt();
                chat.m_type   = br.ReadChar();
                chat.m_text   = br.ReadString();
                datas.Add(chat);
            }
            br.Close();
            return(1);
        }
Пример #22
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="functionID">方法ID</param>
        /// <param name="requestID">请求ID</param>
        /// <param name="sessions">用户会话集合</param>
        /// <returns>状态</returns>
        public int Send(int functionID, int requestID, List <UserSession> sessions)
        {
            Binary bw   = new Binary();
            int    size = sessions.Count;

            bw.WriteInt(size);
            for (int i = 0; i < size; i++)
            {
                UserSession session = sessions[i];
                bw.WriteInt(session.m_userID);
                bw.WriteString(session.m_key);
                bw.WriteString(session.m_value);
            }
            byte[] bytes = bw.GetBytes();
            int    ret   = Send(new CMessage(GroupID, ServiceID, functionID, SessionID, requestID, m_socketID, 0, CompressType, bytes.Length, bytes));

            bw.Close();
            return(ret);
        }
Пример #23
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="userID">方法ID</param>
        /// <param name="userID">请求ID</param>
        /// <param name="text">发送字符</param>
        public int SendToAllClients(int functionID, int requestID, List <ChatData> datas)
        {
            Binary bw       = new Binary();
            int    chatSize = datas.Count;

            bw.WriteInt(chatSize);
            for (int i = 0; i < chatSize; i++)
            {
                ChatData chat = datas[i];
                bw.WriteInt(chat.m_userID);
                bw.WriteChar((char)chat.m_type);
                bw.WriteString(chat.m_text);
            }
            byte[] bytes = bw.GetBytes();
            int    ret   = Send(new CMessage(GroupID, ServiceID, functionID, SessionID, requestID, m_socketID, 0, CompressType, bytes.Length, bytes));

            bw.Close();
            return(ret);
        }
Пример #24
0
        /// <summary>
        /// 保持活跃
        /// </summary>
        /// <param name="socketID">套接字ID</param>
        /// <returns>状态</returns>
        public virtual int KeepAlive(int socketID)
        {
            Binary bw = new Binary();

            bw.WriteInt((int)4);
            byte[] bytes  = bw.GetBytes();
            int    length = bytes.Length;
            IntPtr ptr    = Marshal.AllocHGlobal(sizeof(byte) * length);

            for (int i = 0; i < length; i++)
            {
                IntPtr iptr = (IntPtr)((int)ptr + i);
                Marshal.WriteByte(iptr, bytes[i]);
            }
            int ret = SendByClient(socketID, ptr, length);

            Marshal.FreeHGlobal(ptr);
            bw.Close();
            return(ret);
        }
Пример #25
0
        /// <summary>
        /// 获取交易数据
        /// </summary>
        /// <param name="securityCode"></param>
        /// <param name="transactionDatas"></param>
        /// <param name="body"></param>
        /// <param name="bodyLength"></param>
        /// <returns></returns>
        public static int GetTransactionDatas(ref string securityCode, List <TransactionData> transactionDatas, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            securityCode = binary.ReadString();
            int num = binary.ReadInt();

            for (int i = 0; i < num; i++)
            {
                TransactionData item = new TransactionData();
                item.m_date   = binary.ReadDouble();
                item.m_price  = binary.ReadFloat();
                item.m_volume = binary.ReadDouble();
                item.m_type   = binary.ReadChar();
                transactionDatas.Add(item);
            }
            binary.Close();
            return(1);
        }
Пример #26
0
        /// <summary>
        /// 通过流获取用户会话
        /// </summary>
        /// <param name="sessions">用户会话</param>
        /// <param name="body">包体</param>
        /// <param name="bodyLength">包体长度</param>
        public static int GetSessions(List <UserSession> sessions, byte[] body, int bodyLength)
        {
            Binary br = new Binary();

            br.Write(body, bodyLength);
            int size = br.ReadInt();

            if (size > 0)
            {
                for (int i = 0; i < size; i++)
                {
                    UserSession session = new UserSession();
                    session.m_userID = br.ReadInt();
                    session.m_key    = br.ReadString();
                    session.m_value  = br.ReadString();
                    sessions.Add(session);
                }
            }
            br.Close();
            return(1);
        }
Пример #27
0
        /// <summary>
        /// 获取实时数据L2
        /// </summary>
        /// <param name="dataInfo"></param>
        /// <param name="datas"></param>
        /// <param name="body"></param>
        /// <param name="bodyLength"></param>
        /// <returns></returns>
        public static int GetLatestDatasLV2(ref LatestDataInfoLV2 dataInfo, List <SecurityLatestDataLV2> datas, byte[] body, int bodyLength)
        {
            Binary binary = new Binary();

            binary.Write(body, bodyLength);
            dataInfo.m_size = binary.ReadInt();
            for (int i = 0; i < dataInfo.m_size; i++)
            {
                SecurityLatestDataLV2 item = new SecurityLatestDataLV2();
                item.m_securityCode = binary.ReadString();
                item.m_allBuyVol    = binary.ReadDouble();
                item.m_avgBuyPrice  = binary.ReadFloat();
                item.m_allSellVol   = binary.ReadDouble();
                item.m_avgSellPrice = binary.ReadFloat();
                item.m_buyVolume6   = binary.ReadInt();
                item.m_buyPrice6    = binary.ReadFloat();
                item.m_buyVolume7   = binary.ReadInt();
                item.m_buyPrice7    = binary.ReadFloat();
                item.m_buyVolume8   = binary.ReadInt();
                item.m_buyPrice8    = binary.ReadFloat();
                item.m_buyVolume9   = binary.ReadInt();
                item.m_buyPrice9    = binary.ReadFloat();
                item.m_buyVolume10  = binary.ReadInt();
                item.m_buyPrice10   = binary.ReadFloat();
                item.m_sellVolume6  = binary.ReadInt();
                item.m_sellPrice6   = binary.ReadFloat();
                item.m_sellVolume7  = binary.ReadInt();
                item.m_sellPrice7   = binary.ReadFloat();
                item.m_sellVolume8  = binary.ReadInt();
                item.m_sellPrice8   = binary.ReadFloat();
                item.m_sellVolume9  = binary.ReadInt();
                item.m_sellPrice9   = binary.ReadFloat();
                item.m_sellVolume10 = binary.ReadInt();
                item.m_sellPrice10  = binary.ReadFloat();
                datas.Add(item);
            }
            binary.Close();
            return(1);
        }
Пример #28
0
        public int Send(int functionID, int requestID, List <UserSecurityCategory> categories)
        {
            Binary binary = new Binary();
            int    count  = categories.Count;

            binary.WriteInt(count);
            for (int i = 0; i < count; i++)
            {
                UserSecurityCategory category = categories[i];
                binary.WriteString(category.m_categoryID);
                binary.WriteInt(category.m_userID);
                binary.WriteString(category.m_name);
                binary.WriteString(category.m_codes);
                binary.WriteInt(category.m_type);
                binary.WriteInt(category.m_orderNum);
            }
            byte[] bytes = binary.GetBytes();
            int    num3  = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num3);
        }
Пример #29
0
        public int Send(int functionID, int requestID, List <IndicatorLayout> layouts)
        {
            Binary binary = new Binary();
            int    count  = layouts.Count;

            binary.WriteInt(count);
            for (int i = 0; i < count; i++)
            {
                IndicatorLayout layout = layouts[i];
                binary.WriteString(layout.m_layoutID);
                binary.WriteInt(layout.m_userID);
                binary.WriteString(layout.m_name);
                binary.WriteString(layout.m_text);
                binary.WriteInt(layout.m_type);
                binary.WriteInt(layout.m_orderNum);
            }
            byte[] bytes = binary.GetBytes();
            int    num3  = this.Send(new CMessage(base.GroupID, base.ServiceID, functionID, base.SessionID, requestID, this.m_socketID, 0, base.CompressType, bytes.Length, bytes));

            binary.Close();
            return(num3);
        }
Пример #30
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="functionID">方法ID</param>
        /// <param name="requestID">请求ID</param>
        /// <param name="loginInfos">登录信息集合</param>
        /// <returns>状态</returns>
        public int Send(int functionID, int requestID, List <LoginInfo> loginInfos)
        {
            Binary bw             = new Binary();
            int    loginInfosSize = loginInfos.Count;

            bw.WriteInt(loginInfosSize);
            for (int i = 0; i < loginInfosSize; i++)
            {
                LoginInfo loginInfo = loginInfos[i];
                bw.WriteInt(loginInfo.m_userID);
                bw.WriteString(loginInfo.m_userName);
                bw.WriteString(loginInfo.m_passWord);
                bw.WriteString(loginInfo.m_nickName);
                bw.WriteInt(loginInfo.m_type);
                bw.WriteInt(loginInfo.m_state);
                bw.WriteInt(loginInfo.m_sessionID);
            }
            byte[] bytes = bw.GetBytes();
            int    ret   = Send(new CMessage(GroupID, ServiceID, functionID, SessionID, requestID, m_socketID, 0, CompressType, bytes.Length, bytes));

            bw.Close();
            return(ret);
        }