コード例 #1
0
ファイル: ClientChat.cs プロジェクト: Maatss/Phinix
        /// <summary>
        /// Handles incoming <see cref="ChatMessageResponsePacket"/>s.
        /// </summary>
        /// <param name="connectionId">Original connection ID</param>
        /// <param name="packet">Incoming packet</param>
        private void chatMessageResponsePacketHandler(string connectionId, ChatMessageResponsePacket packet)
        {
            lock (messageHistoryLock)
            {
                ClientChatMessage message;
                try
                {
                    // Try get a message with a corresponding original message ID
                    message = messageHistory.Single(m => m.MessageId == packet.OriginalMessageId);
                }
                catch (InvalidOperationException)
                {
                    RaiseLogEntry(new LogEventArgs(string.Format("Got a ChatMessageResponsePacket with an unknown original message ID ({0})", packet.OriginalMessageId), LogLevel.WARNING));

                    // Stop here
                    return;
                }

                // Update the message ID
                message.MessageId = packet.NewMessageId;

                if (packet.Success)
                {
                    // Update the message content and confirm it
                    message.Message = packet.Message;
                    message.Status  = ChatMessageStatus.CONFIRMED;
                }
                else
                {
                    // Deny the message but don't overwrite the content
                    message.Status = ChatMessageStatus.DENIED;
                }
            }
        }
コード例 #2
0
ファイル: ServerChat.cs プロジェクト: thomotron/Phinix
        /// <summary>
        /// Creates and sends a <see cref="ChatMessageResponsePacket"/> to the given connection ID.
        /// </summary>
        /// <param name="connectionId">Destination connection ID</param>
        /// <param name="success">Whether the chat message was processed successfully</param>
        /// <param name="originalMessageId">Original message ID</param>
        /// <param name="newMessageId">Newly-generated message ID</param>
        /// <param name="message">Message content</param>
        private void sendChatMessageResponse(string connectionId, bool success, string originalMessageId, string newMessageId, string message)
        {
            // Prepare and pack a ChatMessageResponsePacket
            ChatMessageResponsePacket packet = new ChatMessageResponsePacket
            {
                Success           = success,
                OriginalMessageId = originalMessageId,
                NewMessageId      = newMessageId,
                Message           = message
            };
            Any packedPacket = ProtobufPacketHelper.Pack(packet);

            // Send it on its way
            if (!netServer.TrySend(connectionId, MODULE_NAME, packedPacket.ToByteArray()))
            {
                RaiseLogEntry(new LogEventArgs("Failed to send ChatMessageResponsePacket to connection " + connectionId.Highlight(HighlightType.ConnectionID), LogLevel.ERROR));
            }
        }