示例#1
0
        /// <inheritdoc/>
        public Task SendMessageAsync(string text, string sender)
        {
            var message = new ChatMessage {
                Sender = sender, Text = text, Time = DateTime.UtcNow
            };

            message.Id = message.Time.Ticks;
            Messages.Add(message);
            ObtainMessage?.Invoke(message);
            return(Task.CompletedTask);
        }
示例#2
0
        /// <summary>
        /// Handels the incomming new <see cref="ChatMessage"/>.
        /// </summary>
        /// <param name="message">If this <see cref="ChatMessage"/> will be added/updated in the <see cref="messages"/>.
        /// If it's new, a <see cref="ObtainMessage"/>-event will be raised.</param>
        private void OnReceiveMessage(ChatMessage message)
        {
            logger.LogInformation("Received the message '{message}' from {sender}", message.Text, message.Sender);
            bool isNew = false;

            messages.AddOrUpdate(
                message.Id,
                id =>
            {
                isNew = true;
                return(message);
            },
                (id, oldValue) => message);
            if (isNew)
            {
                logger.LogDebug("Raising an ObtainMessage event.");
                ObtainMessage?.Invoke(message);
            }
        }