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); }
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); }
private void _ProcessSendRecv(CQueueMessage queue_msg) { if (queue_msg.m_status == 5) { _ProcessRecv(queue_msg); } else { _ProcessSend(queue_msg); } }
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; } }
public void EnqueueEvent(CQueueMessage queue_msg) { m_event_queue.Enqueue(queue_msg); }