public void ToMessageRecord_GoodMessageEntity_MessageRecord() { Guid userId1 = Guid.NewGuid(); Guid userId2 = Guid.NewGuid(); var message = new MessageEntity { Text = "text", CreateDate = DateTime.Now, SenderId = userId1, Sender = new UserEntity { Id = userId1, Name = "user1" }, RecipientId = userId2, Recipient = new UserEntity { Id = userId2, Name = "user2" } }; MessageRecord result = NotifierConverter.ToMessageRecord(message); Assert.Equal(message.Text, result.Text); Assert.Equal(message.CreateDate, result.CreateDate); Assert.Equal(message.SenderId, result.SenderId); Assert.Equal(message.Sender.Id, result.Sender.Id); Assert.Equal(message.RecipientId, result.RecipientId); Assert.Equal(message.Recipient.Id, result.Recipient.Id); }
/// <summary> /// Writes the message to stream. /// </summary> /// <param name="messageRecord">Message record.</param> public void Write(MessageRecord messageRecord) { var messageBytes = serializer.Serialize(messageRecord.Content); var errorBytes = messageRecord.Error != null?serializer.Serialize(messageRecord.Error) : emptyBytes; var dataBytes = messageRecord.Data != null?serializer.Serialize(messageRecord.Data) : emptyBytes; lock (objLock) { WriteChunk(TokenBeginOfCommand); WriteChunk(TokenId, messageRecord.Id.ToByteArray()); // id WriteChunk(TokenType, BitConverter.GetBytes(messageRecord.Type)); // type WriteChunk(TokenContentType, Encoding.UTF8.GetBytes(messageRecord.ContentType)); // message type WriteChunk(TokenCreated, BitConverter.GetBytes(messageRecord.CreatedAt.ToBinary())); // created WriteChunk(TokenExecutionDuration, BitConverter.GetBytes(messageRecord.ExecutionDuration)); // completed WriteChunk(TokenStatus, BitConverter.GetBytes((byte)messageRecord.Status)); // status if (messageRecord.Error != null) { WriteChunk(TokenErrorDetails, errorBytes); // error } WriteChunk(TokenErrorMessage, Encoding.UTF8.GetBytes(messageRecord.ErrorMessage)); // error message WriteChunk(TokenErrorType, Encoding.UTF8.GetBytes(messageRecord.ErrorType)); // error type WriteChunk(TokenContent, messageBytes); // message object if (messageRecord.Data != null) { WriteChunk(TokenData, dataBytes); } WriteChunk(TokenEndOfCommand); } }
MessageRecord _lastMessage = null; // 当前消息显示界面中最后一条消息 // return: // true 这条记录已经被缓存,暂时不加入显示 // false 函数返回后继续处理,加入显示 bool ProcessEdge(MessageRecord record) { if (_edgeRecord != null) { if (record.publishTime == _edgeRecord.publishTime) { _edgeRecords.Add(record); return(true); } // 提取 id 位置后面的 List <MessageRecord> results = new List <MessageRecord>(); foreach (MessageRecord r in _edgeRecords) { if (r.id == _edgeRecord.id) { results.Clear(); continue; } results.Add(r); } _edgeRecord = null; _edgeRecords.Clear(); // results 加入显示 FillMessage(results); } return(false); }
void FillMessage(MessageRecord record) { if (this.webBrowser1.InvokeRequired) { this.webBrowser1.Invoke(new Action <MessageRecord>(FillMessage), record); return; } { StringBuilder text = new StringBuilder(); text.Append("*** " + (_index + 1) + "\r\n"); _index++; 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.ToString("G") + "\r\n"); text.Append("expireTime=" + record.expireTime + "\r\n"); AppendHtml(this.webBrowser1, text.ToString()); } }
// 是否为自己发出的消息 bool IsMe(MessageRecord record) { if (string.IsNullOrEmpty(Program.MainForm.MessageHub.UserName) == false && record.userName == Program.MainForm.MessageHub.UserName) { return(true); } if (string.IsNullOrEmpty(Program.MainForm.MessageHub.UserName)) { string strParameters = Program.MainForm.MessageHub.Parameters; Hashtable table = StringUtil.ParseParameters(strParameters, ',', '=', "url"); string strLibraryName = (string)table["libraryName"]; string strLibraryUID = (string)table["libraryUID"]; string strLibraryUserName = (string)table["libraryUserName"]; string strText = strLibraryUserName + "@" + strLibraryName + "|" + strLibraryUID; if (CompareUserName(record.creator, "~" + strText) == true) { return(true); } } return(false); }
void SendMessage(string strGroupName, string strText) { this.EnableControls(false); List <MessageRecord> messages = new List <MessageRecord>(); MessageRecord record = new MessageRecord(); record.groups = new string [1] { strGroupName }; record.data = strText; messages.Add(record); SetMessageRequest param = new SetMessageRequest("create", "", messages); SetMessageResult result = Program.MainForm.MessageHub.SetMessageAsync(param).Result; if (result.Value == -1) { this.Invoke((Action)(() => MessageBox.Show(this, result.ErrorInfo))); } else { // 调用成功后才把输入的文字清除 this.Invoke((Action)(() => this.textBox_input.Text = "" )); } this.EnableControls(true); }
public int InsertMessageRecordByImgs(MessageRecord record) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@MID", Guid.NewGuid()), new SqlParameter("@MType", record.MType), new SqlParameter("@HeadImgUrl", record.HeadImgUrl), new SqlParameter("@ImgUserID", record.ImgUserID), new SqlParameter("@ImgUrl", record.ImgUrl), new SqlParameter("@CreateTime", record.CreateTime), }; var result = Dapper.Helper.SQLHelper.Execute(@"INSERT INTO [dbo].[MessageRecord] ([MID] ,[MType] ,[HeadImgUrl] ,[ImgUserID] ,[ImgUrl] ,[CreateTime]) VALUES (@MID ,@MType ,@HeadImgUrl ,@ImgUserID ,@ImgUrl ,@CreateTime)", sp, CommandType.Text); return(result); }
// 如果必要,加入时间提示行 void AddTimeLine(MessageRecord record) { DateTime lastTime = new DateTime(0); if (_lastMessage != null) { lastTime = _lastMessage.publishTime; } if (lastTime.Date != record.publishTime.Date // 不是同一天 ) { this.AddTimeLine(record.publishTime.ToString()); return; } if (lastTime.Date != record.publishTime.Date || // 不是同一天 lastTime.Hour != record.publishTime.Hour || // 不是同一小时 record.publishTime - lastTime > new TimeSpan(1, 0, 0) // 和前一条差距超过一个小时 ) { if (record.publishTime.Date == DateTime.Now.Date) { this.AddTimeLine(record.publishTime.ToLongTimeString()); // 今天的时间,显示简略格式 } else { this.AddTimeLine(record.publishTime.ToString()); } } }
private void processOutgoingMessageRecord(MessageRecord record) { var messageDatabase = DatabaseFactory.getMessageDatabase(); /*MmsDatabase mmsDatabase = DatabaseFactory.getMmsDatabase()); * MmsAddressDatabase mmsAddressDatabase = DatabaseFactory.getMmsAddressDatabase();*/ /*if (messageRecord.isMms()) * { * mmsDatabase.removeMismatchedIdentity(messageRecord.MismatchedIdentities, * mismatch.RecipientId, * mismatch.IdentityKey); * * var recipients = mmsAddressDatabase.getRecipientsForId(messageRecord.MessageId); * * if (recipients.isGroupRecipient()) MessageSender.resendGroupMessage(, masterSecret, messageRecord, mismatch.getRecipientId()); * else MessageSender.resend(getContext(), masterSecret, messageRecord); * } * else {*/ messageDatabase.RemoveMismatchedIdentity(record.MessageId, mismatch.RecipientId, mismatch.IdentityKey); MessageSender.resend(record); // } }
private void processIncomingMessageRecord(MessageRecord record) { try { PushDatabase pushDatabase = DatabaseFactory.getPushDatabase(); var messageDatabase = DatabaseFactory.getMessageDatabase(); messageDatabase.RemoveMismatchedIdentity(record.MessageId, mismatch.RecipientId, mismatch.IdentityKey); SignalServiceEnvelope envelope = new SignalServiceEnvelope((int)SignalServiceProtos.Envelope.Types.Type.PREKEY_BUNDLE, record.IndividualRecipient.getNumber(), (int)record.RecipientDeviceId, "", (long)TimeUtil.GetUnixTimestamp(record.DateSent), Base64.decode(record.Body.Body), null); long pushId = pushDatabase.Insert(envelope); var task = new PushDecryptTask(pushId, record.MessageId, record.IndividualRecipient.getNumber()); App.Current.Worker.AddTaskActivities(task); } catch (IOException e) { throw new Exception(); } }
public void TestEncodeMessageIdentifyCommand() { MessageRecordDataUInt messageRecordData = new MessageRecordDataUInt(RecordType.UnsignedX0, 0, 0); Parameter parameter = new Parameter(OpenThingsParameter.IdentifyCommand); MessageRecord messageRecord = new MessageRecord(parameter, messageRecordData); MessageHeader messageHeader = new MessageHeader(0, 0, 0, 0x00F3E379); Message message = new Message(messageHeader); message.Records.Add(messageRecord); // Act var result = _encoder.Encode(message); // Assert result .Should() .NotBeNull() .And .NotBeEmpty() .And .ContainInOrder(new List <byte>() { 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xE3, 0x79, 0xBF, 0x00, 0x00, 0xE9, 0x4E }); }
private bool CheckMsg(MessageRecord msg) { if (string.IsNullOrEmpty(msg.MessageId) && string.IsNullOrEmpty(msg.ToAddress) && DateTime.MinValue.Equals(msg.MsgData.OrderDate) && string.IsNullOrEmpty(msg.MsgData.OrderName)) { return(false); } StringBuilder sb = new StringBuilder(); if (string.IsNullOrEmpty(msg.MessageId)) { sb.AppendLine("订单编号不能为空;"); } if (string.IsNullOrEmpty(msg.MsgData.OrderName)) { sb.AppendLine("商品名称不能为空;"); } if (!ValidateHelper.IsMobile(msg.ToAddress)) { sb.AppendLine("手机号验证失败;"); } if (DateTime.MinValue.Equals(msg.MsgData.OrderDate)) { sb.AppendLine("订单日期验证失败;"); } msg.Remark = sb.ToString(); return(true); }
public JsonResult Send(int id) { ResultRetrun rmodel = new ResultRetrun(); MessageRecord data = msgService.Get(id); if (data.SendState == MsgSendState.SendSuccess) { rmodel.message = "该消息已经发送成功,不能重复发送"; return(Json(rmodel, JsonRequestBehavior.AllowGet)); } try { rmodel.isSuccess = msgService.Send(new List <MessageRecord>() { data }, false); } catch (BizException biz) { rmodel.message = biz.Message; } catch (Exception ex) { rmodel.message = "操作失败,原因:" + ex.Message; } return(Json(rmodel, JsonRequestBehavior.AllowGet)); }
public FrmMain() { InitializeComponent(); InitList(); QQMangers = new Manager(); _MsgRecord = new MessageRecord(); QQMangers.AddFriend += new Action <Data.Friend>(QQMangers_AddFriend); QQMangers.ReciveMessage += new Action <string, QQMessageEventArgs>(QQMangers_ReciveMessage); QQMangers.SendError += new Action <string, string, string>(QQMangers_SendError); QQMangers.AddFatherQQ += QQMangers_AddFatherQQ; FriendList.DoubleClickSubItem += new ChatListBox.ChatListEventHandler(FriendList_DoubleClickSubItem); FriendList.ContextSubItem += new ChatListBox.ChatListEventHandler(FriendList_ContextSubItem); MajorFriendList.DoubleClickSubItem += new ChatListBox.ChatListEventHandler(MajorFriendList_DoubleClickSubItem); MajorFriendList.ContextSubItem += new ChatListBox.ChatListEventHandler(MajorFriendList_ContextSubItem); searchBox1.SearchClick += new EventHandler(searchBox1_SearchClick); searchBox1.Box.SelectedIndexChanged += new EventHandler(Box1_SelectedIndexChanged); searchBox1.Box.DisplayMember = "NicName"; searchBox2.SearchClick += new EventHandler(searchBox2_SearchClick); searchBox2.Box.SelectedIndexChanged += new EventHandler(Box2_SelectedIndexChanged); searchBox2.Box.DisplayMember = "NicName"; }
protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { try { var messageDeets = new MessageRecord(); messageDeets.MessageTime = turnContext.Activity.Timestamp.ToString(); messageDeets.MesageText = turnContext.Activity.Text; messageDeets.MessageFrom = turnContext.Activity.From.Name; messageDeets.MessageTo = turnContext.Activity.Recipient.Name; var changes = new Dictionary <string, object>(); { changes.Add("MessageRecords", messageDeets); } await MyStorage.WriteAsync(changes, cancellationToken); await turnContext.SendActivityAsync($"Your message was saved"); } catch { await turnContext.SendActivityAsync($"Your message was all f****d up"); } }
/// <summary> /// Handle the session events. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public static void HandleSessionEvent(Object sender, SessionEventArgs args) { Console.WriteLine(string.Format("HandleSessionEvent - {0}", args.ToString())); switch (args.Event) { case SessionEvent.Acknowledgement: case SessionEvent.RejectedMessageError: MessageRecord mr = args.CorrelationKey as MessageRecord; if (mr != null) { mr.Acked = true; if (args.Event == SessionEvent.Acknowledgement) { mr.Accepted = true; } else if (args.Event == SessionEvent.RejectedMessageError) { mr.Accepted = false; } } break; default: break; } }
public JsonResult Add(MsgViewModel model) { ResultRetrun rmodel = new ResultRetrun(); if (!ValidateHelper.IsDateTime(model.OrderDate)) { rmodel.message = "订单日期输入有误"; } if (ModelState.IsValid) { MessageRecord msgModel = new MessageRecord() { MessageId = model.Number, OperatorId = UserId, SendState = MsgSendState.Unsent, ToAddress = model.Phone, MsgData = new MsgDataInfo() { OrderDate = Convert.ToDateTime(model.OrderDate), OrderName = model.OrderName } }; rmodel.isSuccess = msgService.Add(msgModel); } return(Json(rmodel)); }
// main thread onry public void PushMessage(MessageRecord rc) { lock (MessageQueue) { MessageQueue.Enqueue(rc); } }
/// <inheritdoc /> public Task AddAsync(MessageRecord messageRecord, CancellationToken cancellationToken) { if (disposed) { throw new ObjectDisposedException("The repository has been disposed."); } lock (SyncRoot) { string name = GetAvailableFileNameByDate(currentFileStream, DateTime.Now); if (currentFileStream == null || System.IO.Path.GetFileName(currentFileStream.Name) != name) { Close(); currentFileStream = new FileStream(System.IO.Path.Combine(Path, name), FileMode.Append); } WriteToFile(messageRecord); } if (!BufferStream) { lock (SyncRoot) { currentFileStream.Flush(); } } return(completedTask); }
private void WriteToFile(MessageRecord message) { var jsonBytes = Serializer.Serialize(message); currentFileStream.Write(jsonBytes, 0, jsonBytes.Length); currentFileStream.Write(newLine, 0, newLine.Length); }
public async Task AddAsync(MessageRecord messageRecord, CancellationToken cancellationToken) { if (disposed) { throw new ObjectDisposedException(nameof(AdoNetMessageRepository)); } if (!isInitialized) { lock (objLock) { Init(cancellationToken); } isInitialized = true; } DbConnection connection = null; try { connection = GetConnection(); await ExecuteAddMessageCommandAsync(connection, messageRecord, cancellationToken).ConfigureAwait(false); } finally { if (!KeepConnection && connection != null) { connection.Close(); connection = null; } } }
public void Can_run_query_from_raw_message() { // Arrange pipelineService.ServiceProvider = new FuncServiceProvider(InterfacesResolver); SetupQueryPipeline(pipelineService.PipelineContainer.AddQueryPipeline()); var messageRecord = new MessageRecord { ContentType = "Saritasa.Tools.Messages.Tests.QueriesTests+QueryObject.SimpleQueryWithDependency," + "Saritasa.Tools.Messages.Tests", Content = new Dictionary <string, object> { ["a"] = 10, ["b"] = 20, ["dependencyB"] = null, } }; // Act var queryPipeline = pipelineService.GetPipelineOfType <IQueryPipeline>(); var queryConverter = pipelineService.GetPipelineOfType <IQueryPipeline>() as IMessageRecordConverter; var messageContext = queryConverter.CreateMessageContext(pipelineService, messageRecord); queryPipeline.Invoke(messageContext); // Assert Assert.IsType <List <int> >(messageContext.GetResult <object>()); }
/// <summary> /// Create message record from message context. /// </summary> /// <param name="messageContext">Message context.</param> /// <returns>Message record.</returns> public static MessageRecord Create(IMessageContext messageContext) { var messageRecord = new MessageRecord(); object val; messageRecord.Id = messageContext.Id; if (messageContext.Items.TryGetValue(MessageContextConstants.TypeKey, out object type)) { messageRecord.Type = (byte)type; } messageRecord.Content = messageContext.Content; messageRecord.ContentType = messageContext.ContentId; messageRecord.Status = messageContext.Status; if (messageContext.Items.TryGetValue(MessageContextConstants.DataKey, out val)) { messageRecord.Data = (IDictionary <string, string>)val; } messageRecord.Error = messageContext.FailException; messageRecord.ErrorType = TypeHelpers.GetPartiallyAssemblyQualifiedName(messageContext.FailException?.GetType()); messageRecord.ErrorMessage = messageContext.FailException?.Message ?? string.Empty; if (messageContext.Items.TryGetValue(MessageContextConstants.ExecutionDurationKey, out val)) { messageRecord.ExecutionDuration = (int)val; } return(messageRecord); }
public static string GetTitle(this MessageRecord record) { if (record.Type == "Sms") { return(record.Body); } else if (record.Type == "Email") { var subject = record.GetPropertyValue("Subject"); if (subject != null) { return(subject); } } else if (record.Provider == "RegistrationActivationLetter") { return($"Activation Letter: {record.Body}"); } else if (record.Type == "Inbox") { var obj = JObject.Parse(record.Body); return($"Inbox: { (string)obj["Type"]}"); } else if (record.Type == "WorkItem") { return($"{record.GetPropertyValue("WorkItemId")} - {record.GetPropertyValue("System_Title")}"); } return($"Unknown Type {record.Id:N}"); }
public void NotifySendMessage(MessageRecord message) { string objectForSendJson = JsonConvert.SerializeObject(message); _hub.Invoke(ServerSettings.SendMessageMethodName, message.RecipientId.Value.ToString(), objectForSendJson).Wait(); //InvokeServiceMethod(ServerSettings.SendMessageMethodName, message.RecipientId.Value, message); }
public async Task <IEnumerable <MessageRecord> > GetAsync(MessageQuery messageQuery, CancellationToken cancellationToken) { if (disposed) { throw new ObjectDisposedException(nameof(AdoNetMessageRepository)); } // Execute. var messages = new List <MessageRecord>(); var connection = GetConnection(); using (var command = connection.CreateCommand()) { command.CommandText = queryProvider.GetFilterScript(messageQuery); command.CommandTimeout = 120; // Set timeout to 2 mins since query may take long time. using (var reader = await command.ExecuteReaderAsync(cancellationToken)) { while (await reader.ReadAsync(cancellationToken)) { var messageRecord = new MessageRecord { Type = reader.GetByte(1), Id = reader.GetGuid(2), ContentType = reader.GetString(3) }; var content = serializer.IsText ? Encoding.UTF8.GetBytes(reader.GetString(4)) : (byte[])reader[4]; var contentType = Type.GetType(messageRecord.ContentType); messageRecord.Content = serializer.Deserialize(content, contentType); if (!reader.IsDBNull(5)) { messageRecord.Data = serializer.Deserialize( Encoding.UTF8.GetBytes(reader.GetString(5)), typeof(IDictionary <string, string>)) as IDictionary <string, string>; } if (!reader.IsDBNull(7) && !reader.IsDBNull(8)) { messageRecord.ErrorMessage = reader.GetString(7); messageRecord.ErrorType = reader.GetString(8); var errorType = Type.GetType(messageRecord.ErrorType); if (!reader.IsDBNull(6) && !string.IsNullOrEmpty(messageRecord.ErrorType)) { var error = serializer.IsText ? Encoding.UTF8.GetBytes(reader.GetString(6)) : (byte[])reader[6]; if (error.Length > 0) { messageRecord.Error = serializer.Deserialize(error, errorType) as Exception; } } } messageRecord.CreatedAt = reader.GetDateTime(9); messageRecord.ExecutionDuration = reader.GetInt32(10); messageRecord.Status = (ProcessingStatus)reader.GetByte(11); messages.Add(messageRecord); } } } return(messages); }
public static string GetPropertyValue(this MessageRecord record, string name) { if (record.Properties.ContainsKey(name)) { return(record.Properties[name]); } return(null); }
/// <inheritdoc /> public Task AddAsync(MessageRecord message, CancellationToken cancellationToken) { lock (objLock) { Messages.Add(message); } return completedTask; }
/// <inheritdoc/> public Task DisplayAlert(string title, string message) { MessageRecord record = new MessageRecord(title, message, null, null); this.messageQueue.Enqueue(record); StartDisplay(); return(record.CompletionSource.Task); }
/// <inheritdoc/> public Task <bool> DisplayAlert(string title, string message, string accept, string cancel) { MessageRecord record = new MessageRecord(title, message, accept, cancel); this.messageQueue.Enqueue(record); StartDisplay(); return(record.CompletionSource.Task); }
void SendMessage(string strGroupName, string strText) { this.EnableControls(false); List<MessageRecord> messages = new List<MessageRecord>(); MessageRecord record = new MessageRecord(); record.groups = new string [1] {strGroupName}; record.data = strText; messages.Add(record); SetMessageRequest param = new SetMessageRequest("create", "", messages); SetMessageResult result = this.MainForm.MessageHub.SetMessageAsync(param).Result; if (result.Value == -1) { this.Invoke((Action)(() => MessageBox.Show(this, result.ErrorInfo))); } else { // 调用成功后才把输入的文字清除 this.Invoke((Action)(() => this.textBox_input.Text = "" )); } this.EnableControls(true); }
// 如果必要,加入时间提示行 void AddTimeLine(MessageRecord record) { DateTime lastTime = new DateTime(0); if (_lastMessage != null) lastTime = _lastMessage.publishTime; if (lastTime.Date != record.publishTime.Date // 不是同一天 ) { this.AddTimeLine(record.publishTime.ToString()); return; } if (lastTime.Date != record.publishTime.Date // 不是同一天 || lastTime.Hour != record.publishTime.Hour // 不是同一小时 || record.publishTime - lastTime > new TimeSpan(1, 0, 0) // 和前一条差距超过一个小时 ) { if (record.publishTime.Date == DateTime.Now.Date) this.AddTimeLine(record.publishTime.ToLongTimeString()); // 今天的时间,显示简略格式 else this.AddTimeLine(record.publishTime.ToString()); } }
// 回调函数,用消息填充浏览器控件 void FillMessage(long totalCount, long start, IList<MessageRecord> records, string errorInfo, string errorCode) { if (this.webBrowser1.InvokeRequired) { this.webBrowser1.Invoke(new Action<long, long, IList<MessageRecord>, string, string>(FillMessage), totalCount, start, records, errorInfo, errorCode); return; } if (records != null) { foreach (MessageRecord record in records) { if (ProcessEdge(record)) continue; #if NO AddTimeLine(record); // creator 要替换为用户名 this.AddMessageLine( IsMe(record) ? "right" : "left", string.IsNullOrEmpty(record.userName) ? record.creator : record.userName, record.data); #endif List<MessageRecord> temp = new List<MessageRecord>() { record }; FillMessage(temp); _lastMessage = record; } } }
void FillMessage(IList<MessageRecord> records) { if (records != null) { foreach (MessageRecord record in records) { AddTimeLine(record); // creator 要替换为用户名 this.AddMessageLine( IsMe(record) ? "right" : "left", string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName, record.data); _lastMessage = record; } } }
MessageRecord _lastMessage = null; // 当前消息显示界面中最后一条消息 // return: // true 这条记录已经被缓存,暂时不加入显示 // false 函数返回后继续处理,加入显示 bool ProcessEdge(MessageRecord record) { if (_edgeRecord != null) { if (record.publishTime == _edgeRecord.publishTime) { _edgeRecords.Add(record); return true; } // 提取 id 位置后面的 List<MessageRecord> results = new List<MessageRecord>(); foreach (MessageRecord r in _edgeRecords) { if (r.id == _edgeRecord.id) { results.Clear(); continue; } results.Add(r); } _edgeRecord = null; _edgeRecords.Clear(); // results 加入显示 FillMessage(results); } return false; }
// 是否为自己发出的消息 bool IsMe(MessageRecord record) { if (string.IsNullOrEmpty(this.MainForm.MessageHub.UserName) == false && record.userName == this.MainForm.MessageHub.UserName) return true; if (string.IsNullOrEmpty(this.MainForm.MessageHub.UserName)) { string strParameters = this.MainForm.MessageHub.Parameters; Hashtable table = StringUtil.ParseParameters(strParameters, ',', '=', "url"); string strLibraryName = (string)table["libraryName"]; string strLibraryUID = (string)table["libraryUID"]; string strLibraryUserName = (string)table["libraryUserName"]; string strText = strLibraryUserName + "@" + strLibraryName + "|" +strLibraryUID; if (CompareUserName(record.creator,"~" + strText) == true) return true; } return false; }