예제 #1
0
파일: Form1.cs 프로젝트: yinjuan1123/chord
        void DisplayMessage(AddMessageEventArgs e)
        {
            StringBuilder text = new StringBuilder();

            foreach (MessageRecord record in e.Records)
            {
                text.Append("***\r\n");
                text.Append("action=" + e.Action + "\r\n");
                text.Append("id=" + record.id + "\r\n");
                text.Append("data=" + record.data + "\r\n");
                if (record.groups != null)
                {
                    text.Append("groups=" + HttpUtility.HtmlEncode(string.Join(",", record.groups)) + "\r\n");
                }
                text.Append("creator=" + record.creator + "\r\n");
                text.Append("userName="******"\r\n");

                text.Append("format=" + record.format + "\r\n");
                text.Append("type=" + record.type + "\r\n");
                text.Append("thread=" + record.thread + "\r\n");

                text.Append("publishTime=" + record.publishTime + "\r\n");
                text.Append("expireTime=" + record.expireTime + "\r\n");
            }

            AppendHtml(this.webBrowser1, text.ToString());
        }
예제 #2
0
파일: Form1.cs 프로젝트: yinjuan1123/chord
 // 这里挂接的事件,只用于发送模式时显示。当前为接收模式时,这个事件被忽略
 void _channels_AddMessage(object sender, AddMessageEventArgs e)
 {
     if (_mode == "sender")
     {
         this.BeginInvoke(new Action <AddMessageEventArgs>(DisplayMessage), e);
     }
 }
예제 #3
0
        public virtual void OnAddMessageRecieved(string action,
                                                 IList <MessageRecord> messages)
        {
            AddMessageEventArgs e = new AddMessageEventArgs();

            e.Action  = action;
            e.Records = new List <MessageRecord>();
            e.Records.AddRange(messages);
            this.TriggerAddMessage(this, e);
        }
예제 #4
0
        /// <summary>
        /// 添加信息
        /// </summary>
        /// <param name="sender">发送者</param>
        /// <param name="args">添加信息参数</param>
        private async void AddMessage(object sender, AddMessageEventArgs args)
        {
            Topic currentTopic = GetTopicByName(args.TopicName);
            //移动话题位置
            await MoveTopic(currentTopic);

            TopicController topicController = await GetTopicController(currentTopic);
            //调用对应话题添加消息方法
            await topicController.AddMessage(args.Message);
        }
예제 #5
0
        // 触发消息通知事件
        public virtual void TriggerAddMessage(P2PConnection connection,
                                              AddMessageEventArgs e)
        {
            AddMessageEventHandler handler = this.AddMessage;

            if (handler != null)
            {
                handler(connection, e);
            }
        }
예제 #6
0
 private void ReloadMessage(object sender, AddMessageEventArgs e)
 {
     foreach (SplitContainer splitContainer in splitContainersList)
     {
         if (Convert.ToInt32(splitContainer.Tag) == e.TopicId)
         {
             splitContainer.Panel1.Controls.Clear();
             foreach (UcMessage messageTopic in ObjManagerMessage.BuildMessageList(e.TopicId))
             {
                 splitContainer.Panel1.Controls.Add(messageTopic);
             }
         }
     }
 }
예제 #7
0
파일: ChatForm.cs 프로젝트: zszqwe/dp2
        void AddMessage(AddMessageEventArgs e)
        {
            foreach (MessageRecord record in e.Records)
            {
                AddTimeLine(record);

                // creator 要替换为用户名
                this.AddMessageLine(
                    IsMe(record) ? "right" : "left",
                    string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName,
                    record.data);

                _lastMessage = record;
            }
        }
예제 #8
0
        void _channels_AddMessage(object sender, AddMessageEventArgs e)
        {
            if (e.Action != "create")
            {
                return;
            }

            lock (_syncRoot_messageList)
            {
                // 累积太多了就不送入 list 了,只是激活线程等 GetMessage() 慢慢一百条地处理
                if (this._messageList.Count < 10000)
                {
                    this._messageList.AddRange(e.Records);
                }
            }
            this.Activate();
        }
예제 #9
0
 /// <summary>
 /// 接收分析提醒方法
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Message(object sender, AddMessageEventArgs e)
 {
     if (e.mess == "OK")
     {
         isok = true;
         this.Dispatcher.Invoke(new Action(() =>
         {
             TextBlock1.Text = "正常工作中...";
         }));
     }
     else if (e.mess == "Error")
     {
         this.Dispatcher.Invoke(new Action(() =>
         {
             TextBlock1.Text = "正在连接服务器,请稍等...";
         }));
         isok = false;
         SartFind();
     }
     else
     {
         this.Dispatcher.Invoke(new Action(() =>
         {
             if (e.mess == "分线提醒")
             {
                 AKRemindOK();
             }
             else
             {
                 if (show != null)
                 {
                     show.Close();
                 }
             }
         }));
     }
 }
예제 #10
0
        /// <summary>
        /// 接收分析提醒方法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Message(object sender, AddMessageEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.mess))
            {
                //客户端退出后将连接数据重置
                if (e.mess.Contains("AK"))
                {
                    var ip = e.mess.Replace("AK", "");
                    if (akremind.Any(x => x.IP == ip))
                    {
                        akremind.Remove(akremind.First(x => x.IP == ip));
                    }
                }
                else
                {
                    if (akremind.Any(x => x.IP == e.mess))
                    {
                        akremind.Remove(akremind.First(x => x.IP == e.mess));
                    }
                    akremind.Add(new AkNetworkModel {
                        IP = e.mess
                    });
                }

                this.Dispatcher.Invoke(new Action(() =>
                {
                    TextBlock8.Text  = string.Format("客户端连接数:{0}", akremind.Count);
                    TextBlock23.Text = string.Empty;
                    foreach (var akRemindModel in akremind)
                    {
                        TextBlock23.Text += akRemindModel.IP + "\r\n";
                    }
                    SendMess("OK");
                }));
            }
        }
예제 #11
0
파일: ChatForm.cs 프로젝트: zgren/dp2
        // TODO: 对不是当前群组的消息,要更新左侧群名列表右侧的新消息数显示
        async Task AddMessage(AddMessageEventArgs e)
        {
            // TODO: fragment 消息是否能处理?
            foreach (MessageRecord record in e.Records)
            {
                UpdateGroupNameList(record.groups);

                // 忽略不是当前群组的消息
                if (GroupNameContains(record.groups, _currentGroupName) == false)
                {
                    continue;
                }

                AddTimeLine(record);

                // creator 要替换为用户名
                this.AddMessageLine(
                    IsMe(record) ? "right" : "left",
                    string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName,
                    record.data);

                _lastMessage = record;
            }
        }
예제 #12
0
파일: ChatForm.cs 프로젝트: renyh1013/dp2
 void MessageHub_AddMessage(object sender, AddMessageEventArgs e)
 {
     this.BeginInvoke(new Action<AddMessageEventArgs>(AddMessage), e);
 }
예제 #13
0
파일: ChatForm.cs 프로젝트: renyh1013/dp2
        void AddMessage(AddMessageEventArgs e)
        {
            foreach (MessageRecord record in e.Records)
            {
                AddTimeLine(record);

                // creator 要替换为用户名
                this.AddMessageLine(
                    IsMe(record) ? "right" : "left",
                    string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName,
                    record.data);

                _lastMessage = record;
            }
        }
예제 #14
0
 // 触发消息通知事件
 public virtual void TriggerAddMessage(MessageConnection connection,
     AddMessageEventArgs e)
 {
     AddMessageEventHandler handler = this.AddMessage;
     if (handler != null)
     {
         handler(connection, e);
     }
 }
예제 #15
0
     public virtual void OnAddMessageRecieved(string action,
 IList<MessageRecord> messages)
     {
         AddMessageEventArgs e = new AddMessageEventArgs();
         e.Action = action;
         e.Records = new List<MessageRecord>();
         e.Records.AddRange(messages);
         this.TriggerAddMessage(this, e);
     }
예제 #16
0
파일: ChatForm.cs 프로젝트: zszqwe/dp2
 void MessageHub_AddMessage(object sender, AddMessageEventArgs e)
 {
     this.BeginInvoke(new Action <AddMessageEventArgs>(AddMessage), e);
 }
예제 #17
0
 static void _channels_AddMessage(object sender, AddMessageEventArgs e)
 {
 }
예제 #18
0
        // 接管新增消息事件
        void _channels_AddMessage(object sender, AddMessageEventArgs e)
        {
            if (e.Action != "create")
            {
                return;
            }

            MessageConnection connection = (MessageConnection)sender;

            // 这一断没太看懂,只有通道名为_traceMessage才处理吗
            if (connection.Name != dp2WeiXinService.C_ConnName_TraceMessage)
            {
                return;
            }

            // 合并消息
            List <MessageRecord> fullRecords = new List <MessageRecord>();

            if (e.Records.Count > 0)
            {
                foreach (MessageRecord record in e.Records)
                {
                    // 检查尺寸有没有超过限制
                    if (_msgBuffer.Length + record.data.Length > C_StringBuffer_MaxLength)
                    {
                        dp2WeiXinService.Instance.WriteErrorLog("消息尺寸超过1M,不处理该消息。");
                        _msgBuffer.Clear();//消空消息缓存
                        return;
                    }

                    // 中间的片断消息
                    if (string.IsNullOrEmpty(record.id) == true)
                    {
                        _msgBuffer.Append(record.data);
                        continue;
                    }

                    // 收尾消息
                    _msgBuffer.Append(record.data);      //串上自己的data
                    record.data = _msgBuffer.ToString(); //设上完整的data
                    fullRecords.Add(record);             //设为正式的消息
                    _msgBuffer.Clear();                  //消空消息缓存
                }
            }

            // 有完整的消息才加到数组里
            if (fullRecords.Count > 0)
            {
                lock (_syncRoot_messageList)
                {
                    // 累积太多了就不送入 list 了,只是激活线程等 GetMessage() 慢慢一百条地处理
                    if (this._messageList.Count < 10000)
                    {
                        this._messageList.AddRange(fullRecords);//e.Records);
                    }
                }

                dp2WeiXinService.Instance.WriteDebug2("AddMessage得到" + fullRecords.Count.ToString() + "条消息。");

                // 收到消息后,触发线程处理,即会走到worker里
                this.Activate();
            }
        }