Esempio n. 1
0
 /// <summary>
 /// 接收消息
 /// </summary>
 /// <param name="message">消息</param>
 public override void OnReceive(CMessage message)
 {
     base.OnReceive(message);
     if (DataCenter.IsFull && message.m_functionID == FUNCTIONID_SENDALL)
     {
         DataCenter.ServerChatService.SendAll(message);
     }
     if (message.m_functionID == FUNCTIONID_GETHOSTS)
     {
         List <ChatHostInfo> datas = new List <ChatHostInfo>();
         int type = 0;
         ChatService.GetHostInfos(datas, ref type, message.m_body, message.m_bodyLength);
         if (type != 2)
         {
             int datasSize = datas.Count;
             for (int i = 0; i < datasSize; i++)
             {
                 ChatHostInfo hostInfo = datas[i];
                 //全节点
                 if (hostInfo.m_type == 1)
                 {
                     if (hostInfo.m_ip != "127.0.0.1")
                     {
                         OwLibSV.ChatHostInfo serverHostInfo = new OwLibSV.ChatHostInfo();
                         serverHostInfo.m_ip         = hostInfo.m_ip;
                         serverHostInfo.m_serverPort = hostInfo.m_serverPort;
                         serverHostInfo.m_type       = hostInfo.m_type;
                         DataCenter.ServerChatService.AddServerHosts(serverHostInfo);
                         String newServer = hostInfo.m_ip + ":" + CStr.ConvertIntToStr(hostInfo.m_serverPort);
                         List <ChatHostInfo> hostInfos = new List <ChatHostInfo>();
                         UserCookie          cookie    = new UserCookie();
                         if (DataCenter.UserCookieService.GetCookie("DANDANSERVERS", ref cookie) > 0)
                         {
                             hostInfos = JsonConvert.DeserializeObject <List <ChatHostInfo> >(cookie.m_value);
                         }
                         int  hostInfosSize = hostInfos.Count;
                         bool contains      = false;
                         for (int j = 0; j < hostInfosSize; j++)
                         {
                             ChatHostInfo oldHostInfo = hostInfos[j];
                             String       key         = oldHostInfo.ToString();
                             if (key == newServer)
                             {
                                 contains = true;
                                 break;
                             }
                         }
                         if (!contains)
                         {
                             hostInfos.Add(hostInfo);
                             cookie.m_key   = "DANDANSERVERS";
                             cookie.m_value = JsonConvert.SerializeObject(hostInfos);
                             DataCenter.UserCookieService.AddCookie(cookie);
                         }
                         String            key2            = hostInfo.ToString();
                         OwLib.ChatService findChatService = DataCenter.GetClientChatService(key2);
                         if (findChatService == null)
                         {
                             int socketID = OwLib.BaseService.Connect(hostInfo.m_ip, hostInfo.m_serverPort);
                             if (socketID != -1)
                             {
                                 OwLib.ChatService clientChatService = new OwLib.ChatService();
                                 DataCenter.AddClientChatService(key2, clientChatService);
                                 OwLib.BaseService.AddService(clientChatService);
                                 clientChatService.Connected = true;
                                 clientChatService.ToServer  = type == 1;
                                 //clientChatService.RegisterListener(DataCenter.ChatRequestID, new ListenerMessageCallBack(GintechMessageCallBack));
                                 clientChatService.SocketID = socketID;
                                 clientChatService.Enter();
                             }
                         }
                         else
                         {
                             OwLib.ChatService clientChatService = DataCenter.GetClientChatService(key2);
                             if (!clientChatService.Connected)
                             {
                                 int socketID = OwLib.BaseService.Connect(hostInfo.m_ip, hostInfo.m_serverPort);
                                 if (socketID != -1)
                                 {
                                     clientChatService.Connected = true;
                                     clientChatService.SocketID  = socketID;
                                     clientChatService.Enter();
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     SendToListener(message);
 }
Esempio n. 2
0
        /// <summary>
        /// 调用主线程返方法
        /// </summary>
        /// <param name="sender">调用者</param>
        /// <param name="args">参数</param>
        public void Invoke(object sender, object args)
        {
            CMessage message = args as CMessage;

            if (message != null)
            {
                if (message.m_serviceID == ChatService.SERVICEID_CHAT)
                {
                    if (message.m_functionID == ChatService.FUNCTIONID_SENDALL)
                    {
                        ChatData chatData = new ChatData();
                        ChatService.GetChatData(chatData, message.m_body, message.m_bodyLength);
                        CIndicator indicator = CFunctionEx.CreateIndicator2("", chatData, this);
                        indicator.Clear();
                        indicator.Dispose();
                    }
                    else if (message.m_functionID == ChatService.FUNCTIONID_GETHOSTS)
                    {
                        List <ChatHostInfo> datas = new List <ChatHostInfo>();
                        int type = 0;
                        ChatService.GetHostInfos(datas, ref type, message.m_body, message.m_bodyLength);
                        if (type != 2)
                        {
                            int datasSize = datas.Count;
                            for (int i = 0; i < datasSize; i++)
                            {
                                ChatHostInfo   hostInfo    = datas[i];
                                List <GridRow> rows        = m_gridHosts.m_rows;
                                int            rowsSize    = rows.Count;
                                bool           containsRow = false;
                                for (int j = 0; j < rowsSize; j++)
                                {
                                    GridRow oldRow = rows[j];
                                    if (oldRow.GetCell("colP1").GetString() == hostInfo.m_ip && oldRow.GetCell("colP2").GetInt() == hostInfo.m_serverPort)
                                    {
                                        containsRow = true;
                                    }
                                }
                                if (!containsRow)
                                {
                                    if (hostInfo.m_type == 1)
                                    {
                                        String      key = hostInfo.m_ip + ":" + hostInfo.m_serverPort;
                                        ChatService newServerService = DataCenter.GetClientChatService(key);
                                        if (newServerService == null)
                                        {
                                            newServerService            = new ChatService();
                                            newServerService.ServerIP   = hostInfo.m_ip;
                                            newServerService.ServerPort = hostInfo.m_serverPort;
                                            newServerService.ToServer   = true;
                                            BaseService.AddService(newServerService);
                                            DataCenter.AddClientChatService(key, newServerService);
                                        }
                                    }
                                    else
                                    {
                                        GridRow row = new GridRow();
                                        m_gridHosts.AddRow(row);
                                        row.AddCell("colP1", new GridStringCell(hostInfo.m_ip));
                                        row.AddCell("colP2", new GridIntCell(hostInfo.m_serverPort));
                                        if (hostInfo.m_type == 1)
                                        {
                                            row.AddCell("colP3", new GridStringCell("--"));
                                            row.AddCell("colP4", new GridStringCell("--"));
                                        }
                                        else
                                        {
                                            row.AddCell("colP3", new GridStringCell(hostInfo.m_userID));
                                            row.AddCell("colP4", new GridStringCell(hostInfo.m_userName));
                                        }
                                        row.AddCell("colP5", new GridStringCell(hostInfo.m_type == 1 ? "服务器" : "客户端"));
                                    }
                                }
                            }
                        }
                        else
                        {
                            Dictionary <String, String> removeHosts = new Dictionary <String, String>();
                            foreach (ChatHostInfo hostInfo in datas)
                            {
                                removeHosts[hostInfo.ToString()] = "";
                            }
                            List <GridRow> rows     = m_gridHosts.m_rows;
                            int            rowsSize = rows.Count;
                            if (rowsSize > 0)
                            {
                                for (int i = 0; i < rowsSize; i++)
                                {
                                    GridRow row = rows[i];
                                    String  key = row.GetCell("colP1").GetString() + ":" + row.GetCell("colP2").GetString();
                                    if (removeHosts.ContainsKey(key))
                                    {
                                        m_gridHosts.RemoveRow(row);
                                        i--;
                                        rowsSize--;
                                    }
                                }
                            }
                        }
                        SetHostGridRowVisible();
                    }
                    else if (message.m_functionID == ChatService.FUNCTIONID_SEND)
                    {
                        ChatData chatData = new ChatData();
                        ChatService.GetChatData(chatData, message.m_body, message.m_bodyLength);
                        CIndicator indicator = CFunctionEx.CreateIndicator2("", chatData, this);
                        indicator.Clear();
                        indicator.Dispose();
                    }
                }
            }
            String newStr = args as String;

            if (newStr != null)
            {
                if (newStr == "showchat")
                {
                    FlashWindow(m_mainForm.Handle, true);
                    SetForegroundWindow(m_mainForm.Handle);
                }
                else if (newStr == "shake")
                {
                    m_mainForm.Play();
                }
                else if (newStr.StartsWith("how:"))
                {
                    String  text    = newStr.Substring(4);
                    Barrage barrage = new Barrage();
                    barrage.Text = text;
                    barrage.Mode = 1;
                    m_barrageForm.BarrageDiv.AddBarrage(barrage);
                }
                else
                {
                    TextBoxA txtReceive = GetTextBox("txtReceive");
                    txtReceive.Text += newStr;
                    txtReceive.Invalidate();
                    if (txtReceive.VScrollBar != null && txtReceive.VScrollBar.Visible)
                    {
                        txtReceive.VScrollBar.ScrollToEnd();
                        txtReceive.Update();
                        txtReceive.Invalidate();
                    }
                }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// 接收数据
 /// </summary>
 /// <param name="message">消息</param>
 public virtual void OnReceive(CMessage message)
 {
 }
Esempio n. 4
0
 /// <summary>
 /// 区块链数据回调
 /// </summary>
 /// <param name="message">消息</param>
 public void ChatMessageCallBack(CMessage message)
 {
     m_mainDiv.BeginInvoke(message);
 }
Esempio n. 5
0
 /// <summary>
 /// 股票数据回调事件
 /// </summary>
 /// <param name="message">消息</param>
 private void SecurityDataCallBack(CMessage message)
 {
     OnSecurityDataCallBack(message);
 }
Esempio n. 6
0
 /// <summary>
 /// 证券数据回调方法
 /// </summary>
 /// <param name="message">消息</param>
 public void OnSecurityDataCallBack(CMessage message)
 {
     m_window.BeginInvoke(message);
 }
Esempio n. 7
0
 /// <summary>
 /// 接收数据
 /// </summary>
 /// <param name="message">消息</param>
 public override void OnReceive(CMessage message)
 {
     base.OnReceive(message);
     SendToListener(message);
 }
Esempio n. 8
0
        /// <summary>
        /// 发送POST数据
        /// </summary>
        /// <param name="message">消息</param>
        /// <returns>返回消息</returns>
        public int SendRequest(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;
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(m_url);

            webReq.Method        = "POST";
            webReq.ContentType   = "application/x-www-form-urlencoded";
            webReq.ContentLength = bytes.Length;
            if (bytes != null)
            {
                Stream writer = webReq.GetRequestStream();
                writer.Write(bytes, 0, bytes.Length);
                writer.Close();
            }
            HttpWebResponse response      = (HttpWebResponse)webReq.GetResponse();
            Stream          reader        = response.GetResponseStream();
            long            contentLength = response.ContentLength;

            byte[] dataArray = new byte[contentLength];
            for (int i = 0; i < contentLength; i++)
            {
                dataArray[i] = (byte)reader.ReadByte();
            }
            response.Close();
            reader.Dispose();
            bw.Close();
            int ret = dataArray.Length;

            UpFlow += ret;
            IntPtr ptr = Marshal.AllocHGlobal(sizeof(byte) * ret);

            for (int i = 0; i < ret; i++)
            {
                IntPtr iptr = (IntPtr)((int)ptr + i);
                Marshal.WriteByte(iptr, dataArray[i]);
            }
            BaseService.CallBack(message.m_socketID, 0, ptr, ret);
            Marshal.FreeHGlobal(ptr);
            return(ret);
        }