private void outgoingMSGLoop() { while (true) { MSNUserMessage message = null; try { #region wait for a message to process while (outgoingMSGQueue.Count == 0) { Thread.Sleep(20); } #endregion #region get message message = outgoingMSGQueue.Dequeue(); #endregion #region process message through plugins if (message.ProcessByPlugins) { foreach (IMSNSwitchboardPlugin plugin in plugins) { try { plugin.processOutgoingMessage(message); } catch (Exception err) { Console.WriteLine("IMSNSwitchboard plugin error: " + err.ToString()); } } } #endregion #region wait for socket / active users to be valid if actually sending the message if (message.getSend()) { #region reconnect socket if needs be if (switchboardSocket.connected() != true) { List <String> initialUsers = new List <string>(); for (int i = 0; i < lastMessageUsers.Count; i++) { initialUsers.Add(lastMessageUsers[i].ToString()); controller.startConversation(initialUsers); } } #endregion #region reinvite people if they've all left if (activeUsers.Count == 0 && lastMessageUsers.Count > 0) { for (int i = 0; i < lastMessageUsers.Count; i++) { invite(lastMessageUsers[i].ToString()); } } else if (activeUsers.Count == 0 && lastMessageUsers.Count == 0) { for (int i = 0; i < connectedUsers.Count; i++) { invite(connectedUsers[i].ToString()); } } #endregion #region wait for active users while (activeUsers.Count == 0) { try { Thread.Sleep(50); } catch (Exception) { } } #endregion } #endregion #region writing message to gui plugins IF message.getShowOrRecieve() == true if (message.getDisplay() && MessageSent != null) { MessageSent(message); } /** * if (message.getDisplay()) * { * for (int i = 0; i < windowPlugins.Count; i++) * { * MSNSwitchboardGUIPluginListener plugin = null; * * try * { * plugin = (MSNSwitchboardGUIPluginListener)windowPlugins[i]; * plugin.processOutgoingMessage(message); * } * catch (Exception) * { * if (plugin != null) * { * Console.WriteLine("Error sending outgoing MSG to gui plugin (" + plugin.getName() + ") in MSNSwitchboard.incommingMSGLoop()"); * } * else * { * Console.WriteLine("Error sending outgoing MSG to gui plugin (null) in MSNSwitchboard.incommingMSGLoop()"); * } * } * } * } **/ #endregion #region actually send the message to socket IF message.getSendOrRecieve() == true if (message.getSend()) { if (message.getMessageType().Equals(MSNEnumerations.UserMessageType.outgoing_text_message)) { sendMessage(new MSNMessage(new MSNUserTypingMessage(controller.Username, MSNEnumerations.UserMessageType.outgoing_typing_message).ToString())); } sendMessage(new MSNMessage(message.ToString())); } #endregion } catch (Exception) { if (message != null) { Console.WriteLine("Error processing message in MSNSwitchboad.incommingMSGLoop(), message = " + message.ToString()); } else { Console.WriteLine("Error processing message in MSNSwitchboad.incommingMSGLoop(), message = null"); } } } }
private void incommingMSGLoop() { while (true) { MSNUserMessage message = null; try { #region wait for a message to process while (incommingMSGQueue.Count == 0) { Thread.Sleep(100); } #endregion #region get message message = incommingMSGQueue.Dequeue(); if (message == null) { continue; } #endregion #region process message through plugins if (message.ProcessByPlugins) { foreach (IMSNSwitchboardPlugin plugin in plugins) { try { plugin.processIngoingMessage(message); } catch (Exception err) { Console.WriteLine("IMSNSwitchboard plugin error: " + err.ToString()); } } } #endregion #region writing message to gui plugins IF message.getShowOrRecieve() == true if (message.getDisplay() && MessageRecieved != null) { MessageRecieved(message); } /** * if (message.getDisplay()) * { * for (int i = 0; i < windowPlugins.Count; i++) * { * MSNSwitchboardGUIPluginListener plugin = null; * * try * { * plugin = (MSNSwitchboardGUIPluginListener)windowPlugins[i]; * plugin.processIngoingMessage(message); * } * catch (Exception) * { * if (plugin != null) * { * Console.WriteLine("Error sending inbound MSG to gui plugin (" + plugin.getName() + ") in MSNSwitchboard.incommingMSGLoop()"); * } * else * { * Console.WriteLine("Error sending inbound MSG to gui plugin (null) in MSNSwitchboard.incommingMSGLoop()"); * } * } * } * } **/ #endregion } catch (Exception) { if (message != null) { Console.WriteLine("Error processing message in MSNSwitchboad.incommingMSGLoop(), message = " + message.ToString()); } else { Console.WriteLine("Error processing message in MSNSwitchboad.incommingMSGLoop(), message = null"); } } } }