private void loginHandler(object sender, ServerLoginEventArgs args) { lock (messageHistoryLock) { // Create a chat history packet ChatHistoryPacket packet = new ChatHistoryPacket(); // Convert each chat message to their packet counterparts foreach (ChatMessage chatMessage in messageHistory) { // Create a chat message packet and add it to the history packet packet.ChatMessages.Add( new ChatMessagePacket { Uuid = chatMessage.SenderUuid, MessageId = chatMessage.MessageId, Message = chatMessage.Message, Timestamp = chatMessage.Timestamp.ToTimestamp() } ); } // Pack the history packet Any packedPacket = ProtobufPacketHelper.Pack(packet); // Send it on its way if (!netServer.TrySend(args.ConnectionId, MODULE_NAME, packedPacket.ToByteArray())) { RaiseLogEntry(new LogEventArgs("Failed to send ChatHistoryPacket to connection " + args.ConnectionId.Highlight(HighlightType.ConnectionID), LogLevel.ERROR)); } } }
/// <summary> /// Handles incoming <see cref="ChatHistoryPacket"/>s. /// </summary> /// <param name="connectionId">Original connection ID</param> /// <param name="packet">Incoming packet</param> private void chatHistoryPacketHandler(string connectionId, ChatHistoryPacket packet) { lock (messageHistoryLock) { // Store each message in chat history foreach (ChatMessagePacket messagePacket in packet.ChatMessages) { messageHistory.Add(new ClientChatMessage(messagePacket.MessageId, messagePacket.Uuid, messagePacket.Message, messagePacket.Timestamp.ToDateTime(), ChatMessageStatus.CONFIRMED)); } } }