예제 #1
0
        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));
                }
            }
        }
예제 #2
0
파일: ClientChat.cs 프로젝트: Maatss/Phinix
 /// <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));
         }
     }
 }