示例#1
0
        private void _ProcessRecv(CQueueMessage queue_msg)
        {
            EMessageType msg_type = EMessageType.Text;

            switch (queue_msg.m_type)
            {
            case 0:
                msg_type = EMessageType.Text;
                break;

            case 1:
                msg_type = EMessageType.Image;
                break;

            case 2:
                msg_type = EMessageType.Video;
                break;
            }
            CMessage msg = new CMessage(queue_msg.m_user_id, queue_msg.m_sender_id, queue_msg.m_data, msg_type,
                                        EStatus.Incoming, queue_msg.m_text_ptr, queue_msg.m_date, m_context);

            m_messages.Add(queue_msg.m_message_id, msg);
            if (msg_type != EMessageType.Text)
            {
                string file_type = _GetFileType(queue_msg.m_data);
                string filename;
                if (m_incoming_file(queue_msg.m_sender_id, msg_type == EMessageType.Image ? true : false, out filename, file_type))
                {
                    File.WriteAllBytes(filename, queue_msg.m_data);
                }
            }
            m_incoming_message(queue_msg.m_message_id);
        }
示例#2
0
        private void _ProcessSend(CQueueMessage queue_msg)
        {
            m_backend.SendMessage(queue_msg.m_user_id, queue_msg.m_data, queue_msg.m_type);
            string       key      = m_backend.GetLastMessageId();
            DateTime     msg_date = m_backend.GetLastMessageDate();
            EMessageType msg_type = EMessageType.Text;

            switch (queue_msg.m_type)
            {
            case 1:
                msg_type = EMessageType.Text;
                break;

            case 2:
                msg_type = EMessageType.Image;
                break;

            case 3:
                msg_type = EMessageType.Video;
                break;
            }
            CMessage msg = new CMessage(m_user_id, m_user_id, queue_msg.m_data, msg_type, EStatus.Sending,
                                        queue_msg.m_text_ptr, msg_date, m_context);

            m_messages.Add(key, msg);
        }
示例#3
0
 private void _ProcessSendRecv(CQueueMessage queue_msg)
 {
     if (queue_msg.m_status == 5)
     {
         _ProcessRecv(queue_msg);
     }
     else
     {
         _ProcessSend(queue_msg);
     }
 }
示例#4
0
        private void _ProcessUpdatedStatus(CQueueMessage queue_msg)
        {
            CMessage message;

            if (m_messages.ContainsKey(queue_msg.m_user_id))
            {
                message = m_messages[queue_msg.m_user_id];
            }
            else
            {
                return;
            }
            switch (queue_msg.m_status)
            {
            case 0:             //Sending
                message.UpdateRepresentation(EStatus.Sending, m_context);
                break;

            case 1:             //Sent
                message.UpdateRepresentation(EStatus.Sent, m_context);
                break;

            case 2:             //Failed to send
                message.UpdateRepresentation(EStatus.FailedToSend, m_context);
                break;

            case 3:             //Delivered
                message.UpdateRepresentation(EStatus.Delivered, m_context);
                break;

            case 4:             //Seen
                message.UpdateRepresentation(EStatus.Seen, m_context);
                m_messages.Remove(queue_msg.m_user_id);
                break;
            }
        }
示例#5
0
 public void EnqueueEvent(CQueueMessage queue_msg)
 {
     m_event_queue.Enqueue(queue_msg);
 }